javascript: UTC 日期转换为时区日期

时间:2021-05-27 14:48:36

标签: date time utc zone

在我的应用程序中,我需要将 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

日期字符串部分可以满足我的要求。但是如果我打印内部毫秒数,我注意到它们是两个不同的时间,对吗?只有当两个时间的内部毫秒值相同时,它们才是相同的时间,对吗?这对我很重要,因为我需要很多日期/时间比较操作。

0 个答案:

没有答案