为什么 new Date().toISOString() 会丢失时区?

Dmi*_*kov 8 javascript date-formatting

我不想使用像 momentjs 这样的任何外部库,我想自己创建一个格式化的日期字符串。我尝试使用new Date().toISOString(),但它正在丢失时区。

这:

new Date()
Run Code Online (Sandbox Code Playgroud)

给出:

Sat Jun 24 2017 09:32:10 GMT+0300 (RTZ 2 (winter))

和:

new Date().toISOString();
Run Code Online (Sandbox Code Playgroud)

给出:

2017-06-24T06:32:22.990Z

并且09:32:10是正确的时间,因此06:32:22丢失了时区信息。

除此之外,它看起来new Date().toLocaleString()几乎满足了我的需要。最后几个小时是正确的。结果:"24.06.2017, 11:37:05"

Sha*_*zaz 3

来自类似问题的回答

moment.js 很棒,但有时您不想为简单的事情拉取大量依赖项。

以下作品也有效:

var tzoffset = (new Date()).getTimezoneOffset() * 60000; //以毫秒为单位的偏移量 var localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0,-1); // => '2015-01-26T06:40:36.181'

slice(0,-1) 去掉了代表祖鲁时区的尾部 Z,并且可以用您自己的时区替换。