传递日期和日期时间之间的Javascript Date()差异
Javascript Date() difference between passing date and date-time
为什么我在传递日期时与传递日期和时间时使用new Date()
获得两个不同的日期?
示例:
Date.parse('2015-03-14')
// 1426291200000
new Date(1426291200000)
// Fri Mar 13 2015 17:00:00 GMT-0700 (PDT)
Date.parse('2015-03-14 00:00:00')
// 1426316400000
new Date(1426291400000)
// Fri Mar 13 2015 17:03:20 GMT-0700 (PDT)
对不起,我还不能发表评论。您在Date.parse()
中通过的string
必须遵循
ECMAScript 5 ISO-8601格式支持.此处的参考链接ECMAScript 2015 中指定的格式
据此,日期与时间的格式必须是:'2015-03-14T00:00:00'
而不是'2015-03-14 00:00:00'
。
由于Date.parse('2015-03-14')
的时间在GMT+00,但Date.parse('2015-03-14T00:00:00')
在您的时区,因此如果将时区GMT+00添加到第二个时区,两个时间将相等:
Date.parse('2015-03-14');
Date.parse('2015-03-14T00:00:00+00:00');
//1426291200000
为什么当我传递日期时与传递日期和时间时,我会用新日期()获得两个不同的日期?
因为使用Date构造函数解析字符串(以及Date.parse,它们是等效的)在很大程度上依赖于实现,因此强烈建议不要这样做。
Date.parse('2015-03-14') // 1426291200000 new Date(1426291200000) // Fri Mar 13 2015 17:00:00 GMT-0700 (PDT)
在符合ES5及更高版本的浏览器中,ISO 8601格式的日期被视为UTC(以及UTC,本地或在早期实现中无效),但并非所有浏览器都符合。此外,指定的行为与ISO 8601不一致,ISO 8601规定没有时区的日期将被视为本地日期。
Date.parse('2015-03-14 00:00:00') // 1426316400000 new Date(1426291400000) // Fri Mar 13 2015 17:03:20 GMT-0700 (PDT)
字符串"2015-03-14 00:00:00"不符合ISO 8601,因此解析完全取决于实现,可能被视为UTC、本地或无效。如果符合添加的"T":
"2015-03-14T00:00:00"
它应该被视为本地(注意前面提到的关于不兼容实现的警告)。
强烈建议您始终手动解析字符串。使用一个库,这是许多优秀的解析器之一,或者只是编写自己的函数,2到3行就足够了。
- 为什么要做新的.Date()与new相差1小时.日期().到ISOString()
- date对象未在javascript中返回正确的日期值
- 新Date()javascript的日期字符串
- Date.js错误地分析了ISO 8601 UTC日期
- 使用Date.getTime()计算日期时出错
- Javascript Date - 只设置日期,忽略时间
- Date.prototype.get日期;不能在Safari中工作
- 为什么我的Date对象返回当前日期
- Javascript Date对象到日期字符串
- 使用new date()将数据与当前日期的MM/DD/YYYY格式的日期进行比较和筛选,同时从用户输入值中减去new d
- Firefox new Date()适用于无效日期
- 当在运行nodejs的服务器上调用new Date()时,Date将返回服务器启动时的日期
- Javascript Date():如何将本地日期转换为GMT
- 传递日期和日期时间之间的Javascript Date()差异
- new Date返回NaN或从服务器日期()开始的错误时间
- JavaScript新日期('[Date String]')没有't理解:时区之间的偏移
- 在JavaScript中使用date.parse时,包含有效日期的内容
- Javascript: Date().toJSON() 更改日期.
- 如何测试Date对象是否等于特定日期
- Date.getTime()返回IE11中ISO/Twitter API日期的NaN