Javascript 为什么.toISOString()给出了不同的时间?

Javascript 为什么.toISOString()给出了不同的时间?,javascript,Javascript,为什么此示例给我22号而不是客户23号: console.log(new Date().toISOString()); 输出为:2019-01-22T22:58:46.606Z 客户端时间: 方法总是以UTC为单位输出时间。发件人: 时区始终为零UTC偏移,由后缀“Z”表示 在这种情况下,日期仍然是UTC的22号,但在您的时区中,它已经是23号了 不过,这里的Date对象仍在本地时区中。恰好toISOString()方法总是输出UTC表示。如果您执行以下操作,您应该会看到预期的日期: cons

为什么此示例给我22号而不是客户23号:

console.log(new Date().toISOString());
输出为:
2019-01-22T22:58:46.606Z

客户端时间:

方法总是以UTC为单位输出时间。发件人:

时区始终为零UTC偏移,由后缀“Z”表示

在这种情况下,日期仍然是UTC的22号,但在您的时区中,它已经是23号了

不过,这里的
Date
对象仍在本地时区中。恰好
toISOString()
方法总是输出UTC表示。如果您执行以下操作,您应该会看到预期的日期:

console.log(new Date().toLocaleString()) // "1/22/2019, 3:14:18 PM" for me (US Pacific Time)
toISOString()
返回ISO格式的日期/时间,时区为UTC+0


只是为了补充已经提供的内容。在使用Date()方法时仍然需要小心。它可以根据您提供的内容生成不同的日期

//This outputs midnight (12:00AM) on January 22nd in the UTC timezone
new Date('2019-01-22').toISOString() // output: "2019-01-22T00:00:00.000Z"

//This outputs 5:00AM on January 22nd in the UTC timezone because my PC is in the
//Eastern Standard timezone and I used a different format for my date string.
new Date('01/22/2019').toISOString() // output: "2019-01-22T05:00:00.000Z"

这是因为输出是格林威治时间,而您位于另一个时区。您将在UTC时区中获取日期(这是“Z”在时间字符串末尾的意思)。如何将日期存储在会话存储中的本地时间中,然后转换为日期?一种选择是作为历元。