2010-06-14 65 views
0

我很好奇什么是扩展Date构造函数的最佳实践。延长Javascript日期对象

我现在面临的问题是,该Internet Explorer (< 7+8)无法解析的日期一样

new Date('2010-05-11'); 

我不得不承认,这不是分析的标准方法,反正FireFoxChrome以及执行那种日期字符串。

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

更新

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

回答

2

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

离开他们所带来的绒毛,您的应用程序应该是能够解析简单的日期,如你(YYYY-MM-DD)在所有浏览器一致的方式最起码的。

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

2

DateJS会解析各种不同的字符串,但如果你只是在做一些小事情,你可能不需要它。分流/解析/重建IMO比连接另一个脚本到您的网页更优雅:

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

只需记住Date()月份参数从零开始,而日期参数是没有的。奇怪,我知道。

+0

这正是我现在正在做的。我只是希望有一个本地方法来以某种方式扩展Date对象本身(这对我来说似乎更加优雅)。这更像是一个学术问题。 +1无论如何 – jAndy 2010-06-14 14:08:18

+0

@jAndy:我不知道任何本地解决方案,缺少包装'Date()'或'Date.parse()'。 – 2010-06-14 14:32:14