我在我的项目中使用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?
答案 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上的版本都有不可修复的错误,因为最初的开发人员似乎已经放弃了该项目。