在JavaScript里,Date.parse()会接收一个字符串作为参数,根据字符串格式返回:
- 如果字符串符合日期格式,返回自1970-01-01 00:00:00 UTC时间起的毫秒数。
- 如果字符串不符合格式,返回NaN。
new Date(str),构造函数也可以接收一个字符串作为参数,把字符串转换为表示的日期。构造的日期对象为:
- 如果字符串符合日期格式,返回自1970-01-01 00:00:00 UTC起的Date对象。
- 如果字符串不符合格式,返回Invalid Date。
new Date()使用的是Date.parse的格式要求。其日期格式为RFC2822 或ISO 8601定义的格式。
这里主要简单介绍下我们常用的ISO 8601。
格式:
YYYY-MM-DDThh:mm:ss.sTZD
其中
YYYY:表示年份,由四个数字表示。
MM:表示月份,由两位数字表示。01-12
DD:表示日期,由两位数字表示。01-31
hh:表示时,由两位数字表示。00-23,注意不能有am/pm
mm:表示分,由两位数字表示。00-59
ss:表示秒,由两位数字表示。00-59
s:由多位数字表示,是一个比例数字,表示0.xxxx秒。
TZD:时区。值可以为Z,或者+hh:mm或者-hh:mm。其中Z表示UTC时间,+hh:mm表示相对UTC加的时区时间,-hh:mm表示相对UTC减的时区时间。
注意:日期和时间之间使用了字符串“T”隔开,表示T后面为时间(time)。
示例
表示东8区(即北京时间)晚上8点
2018-01-11T20:00:00+08:00
等同于UTC时间
2018-01-11T12:09:08Z