在date.js中对中午和午夜的混淆
Confusion over noon versus midnight with date.js
我在我的项目中使用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?
看起来像是版本问题:
http://jsfiddle.net/4QK8Q/
http://jsfiddle.net/JKg3n/
第一个是你的文件(来自google代码库),第二个是他们的网站(datejs.com)。有趣的是,它们看起来像是同一个版本,但显然不是。我对这个库不太熟悉,不知道发生了什么,但我建议提交一个bug报告。
这是一个相当老的问题,但是对于那些可能在搜索中偶然发现这个问题的人来说,如果遇到意外行为,强烈建议您切换到当前维护的Date.js版本(https://github.com/abritinthebay/datejs/)。
Google代码库和datejs.com上的版本都有未修复的错误,这些错误不太可能被解决,因为最初的开发人员似乎已经放弃了这个项目。
- 在事件上打开Materialize Date Picker
- 在经过DATE验证的列中创建null值
- 如何将Date字段设置为等于另一个Date+Int值,该值表示月份值
- 为什么要做新的.Date()与new相差1小时.日期().到ISOString()
- 返回值+new Date()与Date.now()是否不同
- Javascript Date.toString() formatting?
- Javascript返回错误的Date值(NodeJS)
- date对象未在javascript中返回正确的日期值
- 当点击今天按钮时,Bootstrap Date Time Picker未选择当前时间
- 新Date()javascript的日期字符串
- JavaScript“new Date()”使用哪个时区
- 返回午夜后创建的文档
- Date对象未返回预期年份
- Date.js错误地分析了ISO 8601 UTC日期
- JS:如何将字符串(“2015年3月10日”)转换为Date对象
- Bootstrap-Datepicker not selecting date when using "set
- JS RegEx for date&名称规则
- 当绑定到Date()-对象时,如何格式化input[time]的值
- Date.parse(0) 返回 2000 的午夜,为什么
- 在date.js中对中午和午夜的混淆