alert(new Date('2010-11-29'));chrome,ff没有这方面的问题,但safari喊“无效日期”。为什么?
编辑:好的,按照下面的注释,我使用了字符串解析,并尝试了以下方法:
alert(new Date('11-29-2010')); //doesn't work in safari
alert(new Date('29-11-2010')); //doesn't work in safari
alert(new Date('2010-29-11')); //doesn't work in safari编辑2018年3月22日:似乎人们还在这里登陆-今天,我会使用moment或date-fns并完成它。约会-fns是非常没有疼痛和轻,以及。
发布于 2010-11-30 06:03:22
模式yyyy-MM-dd不是官方支持的Date构造函数格式。Firefox似乎支持它,但不要指望其他浏览器也这样做。
下面是一些受支持的字符串:
DateJS似乎是解析非标准日期格式的一个很好的库。
编辑:刚刚检查了ECMA-262标准。引用第15.9.1.15节的话:
日期时间字符串格式
ECMAScript在简化ISO8601扩展格式的基础上定义了日期时间的字符串交换格式。格式如下::mm:ss.sssz,其中的字段如下:
此格式包括日期专用表格:
它还包括带有可选时区偏移量的纯时间表单:
还包括“日期-时间”,这可能是上述任何组合。
因此,似乎在标准中包含了YYYY DD,但出于某种原因,Safari不支持它。
Update:在查看datejs文档并使用它之后,您的问题应该使用如下代码来解决:
var myDate1 = Date.parseExact("29-11-2010", "dd-MM-yyyy");
var myDate2 = Date.parseExact("11-29-2010", "MM-dd-yyyy");
var myDate3 = Date.parseExact("2010-11-29", "yyyy-MM-dd");
var myDate4 = Date.parseExact("2010-29-11", "yyyy-dd-MM");发布于 2011-04-13 09:01:23
对我来说,仅仅因为Safari不能正确地实现一个新的库就太过了,而regex则是过火了。这是oneliner
console.log (new Date('2011-04-12'.replace(/-/g, "/")));发布于 2017-07-17 19:31:01
我也面临着一个类似的问题。Date.Parse("DATESTRING")正在开发Chrome (版本59.0.3071.115 ),但没有使用Safari (版本10.1.1 (11603.2.5) )。
狩猎旅行:
Date.parse("2017-01-22 11:57:00")
NaN铬:
Date.parse("2017-01-22 11:57:00")
1485115020000对我有用的解决方案是用"T"替换"T"中的空间。(例子:dateString.replace(/ /g,"T") )
狩猎旅行:
Date.parse("2017-01-22T11:57:00")
1485086220000铬:
Date.parse("2017-01-22T11:57:00")
1485115020000请注意,Safari浏览器的响应比在Chrome浏览器中看到的响应少8小时(28800000 is ),因为Safari在本地TZ中返回响应(比UTC落后8小时)
把两个时间都放在同一个TZ里
狩猎旅行:
Date.parse("2017-01-22T11:57:00Z")
1485086220000铬:
Date.parse("2017-01-22T11:57:00Z")
1485086220000https://stackoverflow.com/questions/4310953
复制相似问题