在我的应用程序中,我需要将 UTC 日期/时间数据转换为特定时区。原始日期/时间数据是遵循 ISO 标准的 UTC 时间,例如 2021-05-24T01:53:00+00:00
。
基于我对类似主题的搜索,我在原生 javascript 中找到了以下函数:
function convertTZ(date: Date, tzString: string) {
return new Date((typeof date === "string" ? new Date(date) : date).toLocaleString("en-US", {timeZone: tzString}));
}
但是根据我的测试,我不确定这个功能是否可以正常工作:
function main() {
var d = new Date("2021-05-24T01:53:00+00:00");
var z = convertTZ(d, "America/Edmonton");
console.log("local time string: ", d.toISOString())
console.log("zone time string", z.toISOString())
console.log("local time in ms" , d.getTime());
console.log("zone time in ms ", z.getTime());
}
输出为:
local time string: 2021-05-24T01:53:00.000Z
zone time string 2021-05-23T11:53:00.000Z
local time in ms 1621821180000
zone time in ms 1621770780000
日期字符串部分可以满足我的要求。但是如果我打印内部毫秒数,我注意到它们是两个不同的时间,对吗?只有当两个时间的内部毫秒值相同时,它们才是相同的时间,对吗?这对我很重要,因为我需要很多日期/时间比较操作。