我有这 2 个控制台日志,但它们返回的时间不同(-2 小时)。
console.log(new Date()) // Date 2015-04-20T15:37:23.000Z
console.log(Date()) // "Mon Apr 20 2015 17:37:23 GMT+0200 (CEST)"
我知道使用 Data() 与使用构造函数并调用 .toString() 是一样的。
但是,我确实需要 Date() 时间而不是新的 Date() 时间。那么为什么它会返回错误的时间,我该如何重置它以输出正确的时间呢?
谢谢,
最佳答案
So why is it returning the wrong time and how can i reset it to output the correct one?
您的第一条语句是使用 Date
对象调用 console.log
。看起来无论您使用的是什么浏览器/控制台插件,都选择使用 UTC 中的 ISO-8601 字符串来显示该 Date
对象。例如,格式由 console
实现选择。
您的第二条语句是使用 string 调用 console.log
,因此格式由 Date
实现选择。 specification makes no requirement on what that string format must be从 JavaScript 引擎到 JavaScript 引擎(是的,真的*),但它必须在本地时区。
显然,在您的浏览器上,console
实现和 Date#toString
实现不匹配。
However, i do need the Date() time and not the new Date() time.
这些字符串定义了同一时刻(前后几微秒);只是字符串是用不同的时区设置准备的。
如果您需要在本地时间将字符串记录到控制台,请使用
console.log(String(new Date()));
...可靠地从 Date
对象获取字符串,而不是 console
生成的字符串。
* 是的,您从 Date#toString
获得的格式是未定义的,完全取决于 JavaScript 实现;唯一的要求是 Date()
和 Date.parse()
都可以解析字符串 toString
输出并返回原始日期。 (JavaScript 甚至没有标准的日期/时间格式 until ES5 ,它只适用于 toISOString
方法,不适用于 toString
。而且 ES5 有点错误,它必须是 amended in ES6 ,这导致了不幸的情况,即 Chrome 在解析没有时区的新日期/时间格式的字符串时做一件事而 Firefox 做另一件事。)
关于javascript - new Date() vs Date() 为什么返回不同的时间(-2 小时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29752484/