首页 > 解决方案 > Javascript - 为什么 ISO8601 格式的时间在 console.log 中以 2 种不同的格式显示?

问题描述

我有 ISO8601 格式的日期,例如“2021-01-01T00:00:00.000Z”。我尝试将 console.log 它作为字符串的一部分和变量 - 我得到两个不同的结果:

2021-01-01T00:00:00.000Z - 当我将其显示为变量时

2021 年 1 月 1 日星期五 01:00:00 GMT+0100(中欧标准时间) - 当我将其显示为字符串的一部分时

如何以 ISO8601 格式“2021-01-01T00:00:00.000Z”显示日期作为字符串的一部分?

let date = new Date(2021, 0, (1 + (1 - 1) * 7), 1);

console.log('Show as variable: ', date);
console.log(`Show as part of string: ${date}`);

编辑:设置正确的日期格式。

标签: javascriptdatetimeformatdatetime

解决方案


我的猜测是它取决于每个运行时的console.log. 模板文字(您的第二个示例)将在将整个内容传递给之前对模板进行插值console.log,因此在记录时它已经是一个字符串(并且它将使用与 相同的值date.toString()),而第一个变体传递一个字符串文字然后是一个对象,它不一定是字符串(由控制台决定如何显示它;想想你通常如何为数组、对象等提供更方便的显示选项)。

Chrome 似乎不在乎,并且显示两个变体相同,而 Firefox 将第一个显示为Date实例。Node 的 CLI 的行为类似于 Firefox,并以不同的方式显示它们,但不显示类型是Date.


推荐阅读