Log*_*phy 8 javascript format date
为什么第一个输入正常工作,但第二个输入在5小时前给出了结果?
new Date("2000-1-1")
Sat Jan 01 2000 00:00:00 GMT-0500 (EST)
new Date("2000-01-01")
Fri Dec 31 1999 19:00:00 GMT-0500 (EST)
Run Code Online (Sandbox Code Playgroud)
我如何让第二个与我合作?
var a = new Date("2000-1-1"); // Sat Jan 01 2000 00:00:00 GMT-0500 (EST)
var b = new Date("2000-01-01"); // Fri Dec 31 1999 19:00:00 GMT-0500 (EST)
console.log(a, a.getTime());
console.log(b, b.getTime());Run Code Online (Sandbox Code Playgroud)
您看到这种情况的原因实际上在MDNDate.parse()页面上有所描述(其中描述了有关官方支持的参数格式的许多详细信息)。具体来说:Date
假定时区的差异
给定日期字符串“2014 年 3 月 7 日”,parse() 假定本地时区,但给定 ISO 格式(例如“2014-03-07”),它将假定 UTC 时区(ES5 和 ECMAScript 2015)。因此,使用这些字符串生成的 Date 对象可能表示不同的时刻,具体取决于支持的 ECMAScript 版本,除非系统设置为 UTC 本地时区。这意味着,看起来相等的两个日期字符串可能会产生两个不同的值,具体取决于要转换的字符串的格式。
所以你看到的是两件事的组合:
因此,您将看到 UTC 时间 2000 年 1 月 1 日午夜(或 1999 年 12 月 31 日晚上 7 点)的美国东部时区版本。
由于您的第一个示例使用非标准格式(从 JS 的角度来看),因此第一个假设不会发挥作用,并且正在假设该值的本地时区(特定于浏览器的决定如何处理非标准格式)。
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |