菜鸟笔记
提升您的技术认知

Javascript中的Date.now() 方法与Date.UTC() 方法 ,Date.parse() 方法

1. Date.now() 方法返回自1970年1月1日 00:00:00 UTC到当前时间的毫秒数。

语法:无参数

var timeInMs = Date.now();

描述:

now()方法返回自1970年1月1日 00:00:00 UTC到当前时间的毫秒数,类型为Number。

因为 now() 是Date的一个静态函数,所以必须以 Date.now() 的形式来使用。

2. Date.UTC() 方法接受的参数同日期构造函数接受最多参数时一样,返回从1970-1-1 00:00:00 UTC到指定日期的的毫秒数。

语法:

Date.UTC(year,month[,date[,hrs[,min[,sec[,ms]]]]]) 

参数:

year
1900 年后的某一年份。
month
0 到 11 之间的一个整数,表示月份。
date
1 到 31 之间的一个整数,表示某月当中的第几天。
hrs
0 到 23 之间的一个整数,表示小时。
min
0 到 59 之间的一个整数,表示分钟。
sec
0 到 59 之间的一个整数,表示秒。
ms
0 到 999 之间的一个整数,表示毫秒

描述:

UTC 方法接受以逗号隔开的日期参数,返回1970-1-1 00:00:00 UTC到指定的日期之间的毫秒数。

你应该指定一个完整格式的年份,如 1998。如果年份被指定为 0 到 99 之间,则该方法会将年份转换为 20 世纪的一个年份(即 1990 + year),例如,指定为 95, 则年份为 1995。

UTC 方法与 Date 有两点不同:

Date.UTC 方法使用协调世界时代替本地时间。
Date.UTC 方法返回一个时间数值,而不是一个日期对象。
如果有一个指定的参数超出其合理范围,则 UTC 方法会通过更新其他参数直到该参数在合理范围内。例如,为月份指定 15,则年份将会加 1,然后月份将会使用 3。

由于 UTC 是 Date(日期对象)的一个静态方法,所以应该在 Date 上直接调用,就像 Date.UTC(),而不要把它作为创建的日期对象的方法。

例子:使用 Date.UTC

下面的语句使用 UTC 时间代替本地时间创建了一个日期对象。

var utcDate = new Date(Date.UTC(96, 11, 1, 0, 0, 0));

 3. Date.parse() 

Date.parse() 方法解析一个表示某个日期的字符串,并返回从1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的UTC时间)的毫秒数,如果该字符串无法识别,或者一些情况下,包含了不合法的日期数值(如:2015-02-31),则返回值为NaN。

不推荐在ES5之前使用Date.parse方法,因为字符串的解析完全取决于实现。直到至今,不同宿主在如何解析日期字符串上仍存在许多差异,因此最好还是手动解析日期字符串(在需要适应不同格式时库能起到很大帮助)。

   

语法

显式调用:

Date.parse(dateString)

隐式调用:

new Date(dateString)

参数

dateString

一个符合 RFC2822 或 ISO 8601 日期格式的字符串(其他格式也许也支持,但结果可能与预期不符)。

返回值

一个表示从1970-1-1 00:00:00 UTC到给定日期字符串所表示时间的毫秒数的数值。如果参数不能解析为一个有效的日期,则返回NaN

描述

parse 方法接受一个日期字符串(例如 "Dec 25, 1995"),并返回从1970-1-1 00:00:00 UTC到该日期字符串所表示日期的毫秒数。该方法在基于字符串值设置日期值时很有用,例如结合使用setTime() 方法和 Date() 构造函数。

parse 方法接受一个表示时间的字符串,返回相应的时间值。该方法可以接受符合 RFC2822 / IETF 日期语法 (RFC2822 Section 3.3) 的字符串,如 "Mon, 25 Dec 1995 13:30:00 GMT"。该方法能够理解美国大陆时区的缩写,但是为了更通用,应该使用时区偏移,如 "Mon, 25 Dec 1995 13:30:00 +0430" (格林威治的子午线向东偏移4小时30分钟)。如果没有指定时区,默认使用本地时区。

GMT 和 UTC 被看作相等。 如果 RFC2822 Section 3.3 格式中不包含时区信息时,会以本地时区来解析日期字符串。

由于在解析日期字符串时存在偏差会导致结果不一致,因此推荐始终手动解析日期字符串,特别是不同的ECMAScript实现会把诸如“2015-10-12 12:00:00”的字符串解析为NaN,UTC或者本地时间。