我想用javascript设置一个2020年开始的日期,并将其转换为isoString;问题是,我总是得到一个这样的日期:像 "2019-12-31T23:00:00.000Z"!!!
start: Date = new Date(new Date().getFullYear(), 0, 1);
如何设置这种格式的日期。"2020-01-01T23:00:01.000Z"
产生的日期是 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日期.