JavaScript使用Date.parse()或new Date()解析字符串日期的格式要求

时间:2022-03-11 16:46:48

在JavaScript里,Date.parse()会接收一个字符串作为参数,根据字符串格式返回:

  1. 如果字符串符合日期格式,返回自1970-01-01 00:00:00 UTC时间起的毫秒数。
  2. 如果字符串不符合格式,返回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