返回不一致结果的日期(取决于是否存在前导零)
Date returning inconsistent results (depending whether leading zero exists)
> new Date('2015-1-1')
Thu Jan 01 2015 00:00:00 GMT-0500 (EST)
> new Date('2015-01-1')
Thu Jan 01 2015 00:00:00 GMT-0500 (EST)
> new Date('2015-1-01')
Thu Jan 01 2015 00:00:00 GMT-0500 (EST)
// Yet...
> new Date('2015-01-01')
Wed Dec 31 2014 19:00:00 GMT-0500 (EST)
// Similarly:
> new Date('2015-1-10')
Sat Jan 10 2015 00:00:00 GMT-0500 (EST)
> new Date('2015-01-10')
Fri Jan 09 2015 19:00:00 GMT-0500 (EST)
无法弄清楚为什么会发生这种情况(Chrome 39)。它与八进制解析有关吗?
火狐只接受new Date('2015-01-10')
,并返回我期望的:Date 2015-01-10T00:00:00.000Z
在相关问题中找到了答案;Chrome 似乎将 YYYY-MM-DD 格式解析为 UTC 时间,然后将其转换为本地时区。因此,UTC 中的2015-01-01 00:00:00
是美国东部标准时间的 12 月 31 日。
请参阅创建新日期对象时的不一致:
看起来形式"1979-04-05"被解释为 UTC 日期(然后在显示时将该 UTC 日期转换为本地时间)。
显然,一个可能的跨浏览器解决方案是用斜杠替换破折号以强制使用本地时间:
new Date('2015-01-10'.replace(/-/g, '/'))
我不确定你的问题,因为我的chrome(39.0.2171.99)在所有情况下都给了我1月01日。但话虽如此,我想指出您可能应该使用
new Date(2015,1,1)
这就是JS日期应该初始化的方式。
相关文章:
- 用于检查数组中是否存在元素的javascript自定义方法
- 是否存在React Native“;WEB代码安全防护”;
- 验证会话中是否存在对象's数组
- 如何查找值是否存在于二叉树中
- 检查是否存在使用chrome扩展的javascript库
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 测试mongo脚本中是否存在参数
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 使用js/jQuery检查对象(而不是元素)是否真的存在
- 检查数组中是否存在字符串值,并返回找到的数组值js
- 如何通过json对象选项卡中的Id来检查对象是否存在
- 检查是否存在任意控制器/操作
- 如何检查一个字符串的所有字符是否都存在于另一个字符串中
- Javascript滑块不滑动,如何判断是否存在JS冲突
- 根据手机上是否存在文件,在jQuery mobile中动态填充列表视图
- javascript测试是否存在两个标志中的任何一个
- 如何使用javascript检查移动sd卡中是否存在文件
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 需要帮助使用JQuery.inArray()检查值是否存在
- 在运行Javascript/jQuery中的函数之前,检查元素是否存在是否更具性能