toIsoString的偏移时区问题:不能很好地转换日期对象。

问题描述 投票:0回答:1

我想用javascript设置一个2020年开始的日期,并将其转换为isoString;问题是,我总是得到一个这样的日期:像 "2019-12-31T23:00:00.000Z"!!!

  start: Date =  new Date(new Date().getFullYear(), 0, 1);

如何设置这种格式的日期。"2020-01-01T23:00:01.000Z"

javascript date timezone offset iso
1个回答
1
投票

产生的日期是 new Date() 允許主機時區偏移,也就是所謂的 "時區偏移"。到ISOString 方法是UTC,所以除非主机设置为UTC,否则会有一个相当于主机时区偏移的差异。在上文中,这就是+01:00。

如果你想要UTC年的开始,那么你必须先生成一个UTC的时间值,然后将其用于日期。

// Get the current UTC year
let year = new Date().getUTCFullYear();
// Create a Date avoiding the local offset
let d = new Date(Date.UTC(year, 0, 1));
// Get a UTC timestamp
console.log(d.toISOString());

如果,另一方面,你想用当地偏移量而不是UTC的ISO 8601时间戳,比如2020-01-01T00:00:00.000+02:00,你就必须自己做,或者使用一个库(按照 这个感谢 Matt JP),见 如何格式化一个JavaScript日期.

© www.soinside.com 2019 - 2024. All rights reserved.