Mer*_*erc 12 javascript datetime date http
如果我使用Date.parse(),我"几乎可以保证"能够解析我程序中的内容吗?
在Mozilla的Date.parse条目中,他们写道:
给定表示时间的字符串,parse()返回时间值.它接受RFC2822/IETF日期语法(RFC2822第3.3节),例如"Mon,25 Dec 1995 13:30:00 GMT".
我自己的服务器返回Sun, 24 May 2015 05:37:13 GMT.
麻烦的是,维基百科告诉我,Date标题遵循RFC 7131.现在,RFC 7231虽然他们似乎在说同样的事情(虽然7231更广泛),但我想知道......
如果我使用Date.parse(),我"几乎可以保证"能够解析我程序中的内容吗?我很高兴地认为服务器没有在时间真空中运行.
fny*_*fny 10
TL; DR如果您要回到新的或旧的RFC 7231兼容字符串,它将解析大多数现代浏览器,因为它们都具有非常相似且非常灵活的解析规则:
new Date('Sun, 24 May 2015 05:37:13 GMT')
new Date('2015 GMT 24 05:37:13 May')
// => Sun May 24 2015 01:37:13 GMT-0400 (EDT)
如果您需要在任何兼容的ECMAScript实现中获得100%保证,则需要使用应用程序代码将时间戳转换为ISO 8601格式:YYYY-MM-DDTHH:mm:ss.sssZ
请记住,时区可能会根据用户的位置而改变.
ECMAScript仅为日期指定以下格式:
ECMAScript基于ISO 8601扩展格式的简化为日期时间定义字符串交换格式.格式如下:
YYYY-MM-DDTHH:mm:ss.sssZ
资料来源:http://es5.github.io/#x15.9.1.15
关于Date.parse:
如果String不符合该格式,则该函数可以回退到任何特定于实现的启发式或特定于实现的日期格式.
资料来源:http://es5.github.io/#x15.9.4.2
使用现代浏览器实现,通常适用以下规则:
month/day/year,month-day-year短期约会January 1 20001 January 20002000 1 January NaN或无效的日期错误"任何地方"真正意味着"随处可见":你可以混淆组件中的垃圾.以下精神错乱有效,例如......
new Date('PM Jan EST 2015 1 10:00')
new Date('2015 1 10:00 Jan EST PM')
// => Thu Jan 01 2015 10:00:00 GMT-0500 (EST)
...这就是为什么你几乎可以保证解析那些日期.
资料来源: