扩展Javascript日期对象

扩展Javascript日期对象,javascript,Javascript,我很好奇延长日期构造函数的最佳实践是什么 我面临的问题是,internetexplorer(

我很好奇延长日期构造函数的最佳实践是什么

我面临的问题是,
internetexplorer(<7+8)
无法解析这样的日期

new Date('2010-05-11');
我必须承认,这不是一种标准的解析方法,无论如何,
FireFox
Chrome
在这种日期字符串上表现得很好

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

更新

我非常希望使用原生js方法来实现这一点。如果没有办法 要添加自定义解析,我只需转换日期字符串。

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

var dStr = '2010-05-11'.split('-');
var d = new Date(dStr[0], dStr[1] - 1, dStr[2]);
请记住
Date()
的月份参数是以零为基础的,而Date参数不是。奇怪,我知道。

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

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

请记住
Date()
的月份参数是以零为基础的,而Date参数不是。奇怪,我知道。

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

撇开它们带来的所有缺点不谈,您的应用程序至少应该能够在所有浏览器中以一致的方式解析简单的日期,例如您的日期(yyyy-mm-dd)


如果浏览器不能保证这一点,那么将日期字符串处理为适合所有浏览器的格式就没有意义了。如果源字符串本身是非标准格式,例如我最近在这方面遇到的
2010-06-08-12:29:53
(注意第三个破折号),那么将其标准化可能是有意义的,之后您会返回到相同的问题-本机解析(这是一个坏主意)或者使用一个库。

我认为使用一个库进行日期解析几乎总是值得的,而不是依赖于浏览器的本机解析功能

撇开它们带来的所有缺点不谈,您的应用程序至少应该能够在所有浏览器中以一致的方式解析简单的日期,例如您的日期(yyyy-mm-dd)


如果浏览器不能保证这一点,那么将日期字符串处理为适合所有浏览器的格式就没有意义了。如果源字符串本身是非标准格式,例如我最近在这方面遇到的
2010-06-08-12:29:53
(注意第三个破折号),那么将其标准化可能是有意义的,之后您会返回到相同的问题-本机解析(这是一个坏主意)或者使用图书馆。

这正是我现在正在做的。我只是希望有一个本地的方法来扩展Date对象本身(对我来说似乎更优雅)。这更像是一个学术问题+1.anyway@jAndy:除了包装
Date()
Date.parse()
,我不知道有任何本机解决方案。这正是我现在正在做的。我只是希望有一个本地的方法来扩展Date对象本身(对我来说似乎更优雅)。这更像是一个学术问题+1.anyway@jAndy:除了包装
Date()
Date.parse()
,我不知道有任何本机解决方案。