【问题标题】:Luxon Convert UTC iso time to specific timzone time in millisecondLuxon 将 UTC iso 时间转换为特定时区时间(以毫秒为单位)
【发布时间】:2021-02-27 08:36:39
【问题描述】:

我正在使用 luxon 根据 timzone 以毫秒为单位转换日期。我正在接收 ISO 格式的时间,但是当我应用 luxon 来转换日期时,它确实如此,但是当我以毫秒为单位解析它时,我与当前和指定的 timzone 没有毫秒差异。

console.log("== Local Zone == ");
console.log(DateTime.local().zoneName);
const sd = DateTime.fromISO("2019-07-27T07:37:49.211Z");
console.log(sd.toMillis());

console.log("== Updated Zone == ");
Settings.defaultZoneName = "America/Chicago";
console.log(DateTime.local().zoneName);
const hd = DateTime.fromISO("2019-07-27T07:37:49.211Z");
console.log(hd.toMillis());

任何帮助/建议将不胜感激。

【问题讨论】:

    标签: javascript datetime luxon


    【解决方案1】:

    您将获得相同的值 (1564213069211),因为输入字符串 ("2019-07-27T07:37:49.211Z") 以代表 UTC 偏移量的 Z 结尾。

    因此,Luxon 只需考虑 UTC+0 偏移量并相应地显示结果。

    const DateTime = luxon.DateTime;
    const Settings = luxon.Settings;
    console.log("== Local Zone == ");
    console.log(DateTime.local().zoneName);
    const sd = DateTime.fromISO("2019-07-27T07:37:49.211Z");
    console.log(sd.toMillis());
    const sdNoZ = DateTime.fromISO("2019-07-27T07:37:49.211");
    console.log(sdNoZ.toMillis());
    
    console.log("== Updated Zone == ");
    Settings.defaultZoneName = "America/Chicago";
    console.log(DateTime.local().zoneName);
    const hd = DateTime.fromISO("2019-07-27T07:37:49.211Z");
    console.log(hd.toMillis());
    const hdNoZ = DateTime.fromISO("2019-07-27T07:37:49.211");
    console.log(hdNoZ.toMillis());
    <script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.js"></script>

    【讨论】:

    • 谢谢,我们需要从字符串中删除 z 来获取时区特定日期吗?
    • "2019-07-27T07:37:49.211Z" 具有“完整”信息日期、时间 + 时区,它表示给定的时间瞬间(请参阅时区转换器 here)。将其转换为毫秒将始终显示1564213069211。删除 Z 将删除时区信息,因此它将根据所考虑的时区表示不同的时间。
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2019-03-03
    • 1970-01-01
    • 2021-09-05
    • 2017-05-28
    相关资源
    最近更新 更多