toIsoString 的偏移时区问题:不能很好地转换日期对象
offset time zone problem with toIsoString : does not convert well the date object
我正在尝试设置一个以 2020 年开始为 javascript 的日期,并将其转换为 isoString;问题是我总是得到这样的日期:比如“2019-12-31T23:00:00.000Z”!!
start: Date = new Date(new Date().getFullYear(), 0, 1);
如何使用这种格式设置日期:“2020-01-01T23:00:01.000Z”
new Date()
生成的日期允许主机时区偏移,toISOString 方法是 UTC,所以除非主机设置为 UTC,否则会有等于主机时区偏移量的差异。在 OP 中是 +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,您必须自己或使用库(根据 this, thanks to Matt JP), see How to format a JavaScript date.
我正在尝试设置一个以 2020 年开始为 javascript 的日期,并将其转换为 isoString;问题是我总是得到这样的日期:比如“2019-12-31T23:00:00.000Z”!!
start: Date = new Date(new Date().getFullYear(), 0, 1);
如何使用这种格式设置日期:“2020-01-01T23:00:01.000Z”
new Date()
生成的日期允许主机时区偏移,toISOString 方法是 UTC,所以除非主机设置为 UTC,否则会有等于主机时区偏移量的差异。在 OP 中是 +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,您必须自己或使用库(根据 this, thanks to Matt JP), see How to format a JavaScript date.