javascript - new Date() vs Date() 为什么返回不同的时间(-2 小时)?

标签 javascript date time

我有这 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/

相关文章:

javascript - querySelectorAll 不适用于数据源集

javascript - 更高效的 jQuery 版本包含

pandas - 在数据框中对日期值进行排序不起作用

javascript - 如何解析时间? (Javascript)

c - 在 C 程序中添加时间戳

javascript - window.location 重定向在 Android 中不起作用

javascript - XHTML/JavaScript 动态内容未格式化

c++ - 获取以毫秒为单位的当前时间,或 HH :MM:SS:MMM format

javascript - 如何在 ng-repeat 中格式化 ng-model 日期?

r - 代表错误(1,n.ahead): invalid 'times' argument in R