企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## 5.3 Date类型 在JavaScript中,Date类型是用来保存日期的,它能精确到1970年1月1日之前或之后的100,000,000年。 ### 5.3.1 创建日期对象 要创建一个日期对象,使用new操作符和Date构造函数即可: ~~~ var now = new Date(); ~~~ 在调用Date构造函数而不传递参数时,新创建的对象自动获得**当前日期和时间**。 如果要根据特定的日期和时间创建日期对象,必须传入表示**该日期的毫秒数**(即从UTC时间1970年1月1日起至该日期止经过的毫秒数) 注意:如果给Date构造函数传入的是其他格式,也会在后台调用Date.parse(),将其转换成毫秒数。 ### 5.3.2 Date对象方法 **1. Date.parse()** Date.parse()接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。 将地区设置为美国的浏览器,通常可以接受下列日期格式: ~~~ “月/日/年”,如11/11/2016 “英文月名 日,年”,如 January 12,2016 “英文星期几 英文月名 日 年 时:分:秒 时区”,如Tue May 25 2016 00:00:00 GMT-0700 ISO 8601扩展格式 YYYY-MM-DDTHH:mm:ss:sssZ,如2016-11-11T00:00:00。兼容ECMAScript 5的浏览器支持这种格式。 var someDate = new Date(Date.parse('2016-11-11')); ~~~ 如果传入Date.parse()方法的字符串不能表示日期,则会返回NaN。 **2.Date.UTC()** Date.UTC()同样能返回表示日期的毫秒数。不过,它传入的参数有所不同,分别是年份、基于0的月份(一月是0,二月是1,以此类推)、月中的哪一天(1到31)、小时数(0到23)、分钟、秒数以及毫秒数,只有前两个参数是必须的。如果没有提供月中的天数,则假设天数为1。如省略其他参数,默认为0. ~~~ var y2k = new Date(Date.UTC(2017,0)); var someDate = new Date(Date.UTC(2017, 0, 1, 0, 0, 0)); ~~~ 如同模仿Date.parse()一样,Date构造函数也会模仿Date.UTC(),但日期和时间都基于本地时区而非GMT来创建。 ~~~ var y2k = new Date(2017, 0) var someDate = new Date(2017, 0, 1, 0, 0, 0); ~~~ **3.Date.now()** Date.now()返回表示调用这个方法时的日期和时间的毫秒数。 ~~~ var times = Date.now(); ~~~ 也可以使用+操作符实现Date.now()的功能: ~~~ var times2 = + new Date(); ~~~ ### 5.3.3 Date实例对象的方法 * valueOf():返回日期的毫秒表示。等于getTime() * to类:从Date对象返回一个字符串,表示指定的时间。 | 方法 | 描述 | | --- | --- | | toString() | 返回一个完整的日期字符串。 | | toLocaleString () | 按照与浏览器设置的时区相适应的格式返回日期字符串,包含AM或PM,但不包含时区。 | | toDateString() | 返回格式为星期几、月、日和年的字符串。 | | toTimeString() | 返回格式为时、分、秒和时区的字符串。 | | toLocaleDateString() | 返回格式为星期几、月、日和年的字符串(依照时区的不同,显示的格式也会所有不同) | | toLocaleTimeString() | 返回格式为时、分、秒和时区的字符串。依照时区的不同,显示的格式也会所有不同) | | toUTCString() | 返回完整的UTC日期 | * get类:获取Date对象的日期和时间 | 方法 | 描述 | | --- | --- | | getTime() | 返回距离1970年1月1日00:00:00的毫秒数,等同于valueOf方法。| | getDay()| 返回星期几,星期日为0,星期一为1,以此类推。| | getYear() | 返回距离1900的年数。| | getFullYear() | 返回四位的年份。| | getMonth()| 返回月份(0表示1月,11表示12月)。| | getHours() |返回小时(0-23)。| | getMilliseconds()| 返回毫秒(0-999)。| | getMinutes() | 返回分钟(0-59)。| | getSeconds() | 返回秒(0-59)。| | getTimezoneOffset() | 返回当前时间与UTC的时区差异,以分钟表示,返回结果考虑到了夏令时因素。| *上面这些get类方法返回的都是当前时区的时间,Date对象还提供了这些方法对应的UTC版本,用来返回UTC时间。* ~~~ getUTCDate() getUTCFullYear() getUTCMonth() getUTCDay() getUTCHours() getUTCMinutes() getUTCSeconds() getUTCMilliseconds() ~~~ * set类:设置Date对象的日期和时间 | 方法 | 描述 | | --- | --- | | setDate(date) | 设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。| | setYear(year) | 设置距离1900年的年数。| | setFullYear(year [, month, date]) | 设置四位年份。| | setHours(hour [, min, sec, ms]) | 设置小时(0-23)。| | setMilliseconds() | 设置毫秒(0-999)。| | setMinutes(min [, sec, ms]) | 设置分钟(0-59)。| | setMonth(month [, date]) | 设置月份(0-11)。| | setSeconds(sec [, ms]) | 设置秒(0-59)。| | setTime(milliseconds) | 设置毫秒时间戳。| 注意:月份都是从0开始的。 set类方法也有对应的设置UTC时间的方法: ~~~ setUTCDate() setUTCFullYear() setUTCHours() setUTCMilliseconds() setUTCMinutes() setUTCMonth() setUTCSeconds() ~~~