扩展Javascript日期对象

时间:2010-06-14 13:55:59

标签: javascript

我很好奇扩展Date构造函数的最佳做法。

我遇到的问题是,Internet Explorer (< 7+8)无法解析像

这样的日期
new Date('2010-05-11');

我必须承认,这不是一种解析的标准方法,无论如何FireFoxChrome在这种日期字符串上表现良好。

现在我想知道,我应该在调用new Date()之前拆分/解析/重建字符串还是有更优雅的解决方案?

更新

我非常喜欢本地的js方法来实现这一目标。如果没有办法 以某种方式添加自定义解析我只会转换日期字符串。

2 个答案:

答案 0 :(得分:2)

DateJS将解析各种不同的字符串,但如果你只是做一些小的时间,你可能不需要它。拆分/解析/重建IMO比将另一个脚本附加到页面更优雅:

var dStr = '2010-05-11'.split('-');
var d = new Date(dStr[0], dStr[1] - 1, dStr[2]);

请记住Date()的月份参数是从零开始的,而日期参数则不是。很奇怪,我知道。

答案 1 :(得分:2)

我认为使用库进行日期解析几乎总是有回报,而不是依赖于浏览器的本机解析功能。

留下他们带来的所有漏洞,应用程序应该具有的最小程度是能够在所有浏览器中以一致的方式解析诸如你的(yyyy-mm-dd)之类的简单日期。

如果浏览器无法保证这一点,那么将日期字符串操作为适合所有浏览器的格式是没有意义的。如果源字符串本身是非标准格式,例如我最近在feed上遇到的2010-06-08-12:29:53(请注意第三个破折号),那么标准化它可能是有意义的,之后您回到同样的问题 - 本地解析(哪个IMO是个坏主意)或使用库。