safari中的日期对象

Date object in safari

本文关键字:对象 日期 safari      更新时间:2023-09-26

我用的是safari 8.0,我试着做

 new Date('sat-oct-10-2015');

在chrome上的结果是日期对象与正确的日期。但是在safari中结果是

 Invalid Date

如何在safari中使用此格式的日期?

不要使用Date构造函数(或Date.parse)来解析字符串。在ES5之前,日期字符串的解析完全依赖于实现。在此之后,ISO 8606的长格式已经被指定,但是ECMAScript 2015改变了部分格式,因此即使使用指定的格式在浏览器之间也不一致(例如,2015-10-15 12:00:00可能导致当前使用的浏览器中有3个不同的结果)。

解决方案是手动解析日期字符串,或者编写自己的函数(如果只需要支持一种格式,这并不困难)或使用小型库。

始终尝试使用ECMAScript ISO格式指定的标准日期格式。

如果使用标准字符串格式,

Date.parse()即Date构造函数将始终产生预期的结果。此外,浏览器可能支持其他字符串格式,但可能不是所有其他浏览器供应商都支持。

当创建具有"人类可读"字符串的Date对象时,必须使用一定的格式,通常符合RFC2822或ISO 8601。

可能是浏览器能够处理您的new Date('sat-oct-10-2015');,但这不是规格所要求的。

提示:看看创建日期对象的其他方法,例如使用Unix时间戳。这比dateString方法更容易、更可靠。

我建议在JavaScript中使用moment.js表示日期。然后可以简单地用

解析日期
moment('sat-oct-10-2015', 'ddd-MMM-DD-YYYY').format();

moments API在所有主流浏览器中都有良好的支持,并简化了使用JavaScript操作和显示日期。