中午与date.js的午夜混淆

时间:2011-09-15 20:58:59

标签: javascript date datejs

我在我的项目中使用date.js,而且我遇到了一些我没想到的日期,这些日期的时间成分恰好在正午或正好是午夜。

当我使用原生javascript Date.parse方法时,我得到了解析日期时所期望的结果:

// plain old javascript
var date = new Date(Date.parse("10/21/2010 12:00:00 PM"));
alert(date);

我明白了:

  

2010年10月21日星期四12:00:00 GMT-0500(中部夏令时)

我将此解释为2010年10月21日中午,这是我认为我的输入日期。但是,当我导入date.js并尝试类似的东西时,

// using date.js
var date = Date.parseExact("10/21/2010 12:00:00 PM", "M/d/yyyy hh:mm:ss tt");
alert(date);

我明白了:

  

2010年10月22日星期五00:00:00 GMT-0500(中部夏令时)

这对我来说就像是第二天的午夜。我不知道为什么它将这个解释为午夜,或者无论如何解释为什么它的解释方式与javascript中的默认Date.parse不同。我对12:00 PM的含义感到困惑吗?我是否滥用了date.js的parseExact?

2 个答案:

答案 0 :(得分:1)

看起来像版本问题:

http://jsfiddle.net/4QK8Q/
http://jsfiddle.net/JKg3n/

第一个是您的文件(来自谷歌代码库),第二个来自他们的网站(datejs.com)。有趣的是,它们看起来像是相同的版本,但显然不是。我对图书馆不太熟悉,不知道发生了什么,但我建议提交一份错误报告。

答案 1 :(得分:1)

这是一个相当古老的问题,但对于那些可能在搜索中偶然发现这一点的人,强烈建议您切换到当前维护的Date.js版本(https://github.com/abritinthebay/datejs/) #39;遇到意外行为。

Google代码库和datejs.com上的版本都有不可修复的错误,因为最初的开发人员似乎已经放弃了该项目。