JavaScript新日期(字符串)兼容大多数浏览器(2016年12月)



在JavaScript中创建新的日期(字符串)时,我一直在处理这个烦人的错误。我的问题是,是否有人找到了适用于大多数浏览器的此问题的更好/标准化的解决方案?例如,我发现IE9不喜欢.sss(miliseconds),那么Firefox与欧洲日期格式(DD-MM-Yyyy)无法正常工作。

让我知道您的想法!

根据mdn:

注意:由于浏览器的差异和不一致而强烈建议使用日期构造函数(和日期构造函数(和日期。对RFC 2822格式字符串的支持仅是按照约定的。对ISO 8601格式的支持在仅日期的字符串(例如" 1970-01-01")中有所不同。

Date.parse()也是如此。如果您担心这样的不一致之处(因为您的浏览器支持非常广泛,或者是因为您从外部来源处理数据),则可以随时使用完整的构造函数:

new Date(year, month, [day, hour, minute, second, millisecond])

括号之间的参数是可选的。如果您可以使用可靠的工具解析日期(例如moment.js,如您所提到的),则可以使用此构建本机Date而无需使用此危险。

它很麻烦,但是将其包装到一个功能中,再也看不到它。

我找到了适合大多数浏览器的字符串格式。

stringFormat = moment(dateObject).format("YYYY-MM-DDTHH:mm:ss");
date = new Date(stringFormat);

我使用Moment.js提供了更多的兼容性,到目前为止,这对IE9 ,Chrome和Firefox都很好。但是,我花了几个论坛和SOF的其他回答来找到一个好的解决方案。

最大的问题是与较旧的浏览器,语言环境格式等兼容。例如,这几乎是正确的,但是我发现IE9不喜欢.sss(miliseconds),并且也无法正常工作。Firefox也有欧洲日期格式的错误。

有人有更好的方法来解决这个问题吗?请分享知识!:)

最新更新