学习笔记7—Date引用类型

引用值(或者对象)是某个特定引用类型的实例。引用类型有时候也被称为对象定义,因为它们描述了自己的对象应有的属性和方法。对象被认为是某个特定引用类型的实例。新对象通过使用new操作符后跟一个构造函数(constructor)来创建。构造函数就是用来创建新对象的函数。

let now = new Date();

这行代码创建了引用类型Date的一个新实例,并将它保存在变量now中。Date()在这里就是构造函数,它负责创建一个只有默认属性和方法的简单对象。ECMAScript提供了很多像Date这样的原生引用类型,帮助开发者实现常见的任务。

Date类型将日期保存为自协调世界时(UTC,Universal Time Coordinated)时间1970年1月1日午夜0时至今所经过的毫秒数。使用这种存储格式,Date类型可以精确表示1970年1月1日之前之后285616年的日期。
要创建日期对象,就使用new操作符来调用Date构造函数:

let now = new Date();

在不给Date构造函数传参数的情况下,创建的对象将保存当前的日期和时间。要基于其他日期和时间创建日期和对象,必须传入其毫秒表示(UNIX纪元1970年1月1日午夜之后的毫秒数)。ECMAScript为此提供了两个辅助方法:Date.parse()和Date.UTC().
Date.parse()方法接收一个表示日期的字符串参数,尝试将这个字符串转换为表示该日期的毫秒数。ECMA-262第5版定义了Date.parse()应该支持的日期格式:

  • “月/日/年“,如"5/23/2019”;
  • “月名 日,年”,如"May 23,2019";
  • “周几 月名 日 年 时:分:秒 时区”,如"Tue May 23 2019 00:00:00 GMT-0700";
  • ISO 8601扩展格式”YYYY-MM-DDTHH:mm:ss.sssZ",如2019-05-23T00:00:00。

比如要创建一个表示"2019年5月23日"的日期对象,可以使用如下代码:

let someDate = new Date(Date.parse("May 23,2019"));

如果要传给Date.parse()的字符串并不表示日期,则该方法会返回NaN。如果直接把表示日期字符串传给Date构造函数,那么Date会在后台调用Date.parse()。换句话说,下面这行代码跟前面那行代码是等价的。

let someDate = new Date("May 23,2019");

Date.UTC()方法也返回日期的毫秒表示,但使用的跟Date.parse()不同的信息来生成这个值。传给Date.UTC的参数是年、零起点月数(1月是0,2月是1,以此类推)、日(1~31)、时(0~23)、分、秒和毫秒。这些参数中,只有前两个(年和月)是必须的。如果不提供日,那么默认为1日。其他参数的默认值都是0。

//GMT时间2000年1月1日零点
let y2k = new Date(Date.UTC(2000,0));

//GMT时间2005年5月5日下午5点55分55秒
let allFives = new Date(Date.UTC(2005,4,5,17,55,55));

与Date.parse()一样,Date.UTC()也会被Date构造函数隐式调用。ECMAScript还提供了Date.now()方法,返回表示方法执行时日期和时间的毫秒数。

//起始时间
let start = Date.now();

//调用函数
doSomething();

//结束时间
let stop = Date.now();
result = stop-start;

(1)继承的方法
与其他类型一样,Date类型重写了toLocaleString()、toString()和valueOf()方法。但与其他类型不同,重写后这些方法返回值不一样。
Date类型的toLocaleString()方法返回与浏览器运行的本地环境一致的日期和时间。
toString()方法通常返回带时区信息的日期和时间。
valueOf()方法根本就不返回字符串,这个方法被重写后返回日期的毫秒表示。因此操作符可以直接使用它返回的值:

let date1 = new Date(2019,0,1); //2019年1月1日
let date2 = new Date(2019,1,1); //2019年2月1日

console.log(date1<date2);//true
console.log(date2<date1);//false

(2)日期格式化方法
Date类型有几个专门用于格式化日期的方法,都返回字符串

  • toDateString()显示日期中的周几、月、日、年
  • toTimeString()显示日期中的时、分、秒和时区
  • toLoacaleDateString()显示日期中的周几、月、日、年
  • toLocaleTimeString()显示日期中的时、分、秒
  • toUTCString()显示完整的UTC日期

这些方法的输出与toLocaleString()和toString()一样,会因浏览器而异。因此不能用于在用户界面上一致地显示日期。
(3)日期/时间组件方法

扫描二维码关注公众号,回复: 12349886 查看本文章
方法 说明
getTime() 返回日期的毫秒表示,与valueOf()相同
setTime(milliseconds) 设置日期的毫秒表示,从而修改整个日期
getFullYear() 返回4位数年
getUTCFullYear() 返回UTC日期的4位数年
setFullYear(year) 设置日期的年(year必须是4位数)
setUTCFullYear(year) 设置UTC日期的年(year必须是4位数)
getMonth() 返回日期的月(0表示1月,11表示12月)
getUTCMonth() 返回UTC日期的月(month为大于0的数值,大于11加年)
setMonth(month) 设置日期的月(month为大于0的数值,大于11加年)
setUTCMonth(month) 设置UTC日期中的月(month为大于0的数值,大于11加年)
getDate() 返回日期中的日(1~31)
getUTCDate() 返回UTC日期中的日(1~31)
setDate(date) 设置日期中的日(如果date大于该月的天数,则加月)
setUTCDate(date) 设置UTC日期中的日(如果date大于该月天数,则加月)
getDay() 返回日期中表示周几的数值(0表示周日,6表示周6)
getUTCDay() 返回UTC日期中表示周几的数值(0表示周日,6表示周六)
getHours() 返回日期中的时(0~23)
getUTCHours() 返回UTC日期中的时(0~23)
setHours(hours) 设置日期中的时(如果hours大于23,则加日)
setUTCHours(hours) 设置UTC日期中的时(如果hours大于23,则加日)
getMinutes() 返回日期中的分(0~59)
getUTCMinutes() 返回UTC日期中的分(0~59)
setMinutes(minutes) 设置日期中的分(如果minutes大于59,则加时)
setUTCMinutes(minutes) 设置UTC日期中的分(如果minutes大于59,则加时)
getSeconds() 返回日期中的秒(0~59)
getUTCSeconds() 返回UTC日期中的秒(0~59)
setSeconds(seconds) 设置日期中的秒(如果seconds大于59,则加分)
setUTCSeconds(seconds) 设置UTC日期中的秒(如果seconds大于59,则加分)
getMilliseconds() 返回日期中的毫秒
getUTCMilliseconds() 返回UTC日期中的毫秒
setMilliseconds(milliseconds) 设置日期中的毫秒
setUTCMilliseconds(milliseconds) 设置UTC日期中的毫秒
getTimezoneOffset() 返回以分钟计的UTC与本地时区的偏移量(如美国EST即“东部标准时间”返回300,进入夏令时的地区可能有所差异

猜你喜欢

转载自blog.csdn.net/qq_43599049/article/details/113073813