gpt4 book ai didi

javascript - 如何在 Javascript 中将带有 3 个字母时区缩写的日期转换为 UTC?

转载 作者:行者123 更新时间:2023-12-04 15:42:39 25 4
gpt4 key购买 nike

我需要在 Javascript 中将日期时间从我无法更改的输入格式(这:“星期二,2019 年 7 月 30 日 21:15:53 GMT”)转换为 UTC。

我实际上需要获取这些日期作为自 Unix 纪元(1970 年)以来的毫秒数,但获取 UTC 将是一个开始。

有没有办法轻松做到这一点?如果需要,我可以使用第三方库。我听说过 moment-timezone.js 但不清楚如何解析 3 个字母的时区,即这些:https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations .

最佳答案

正确的解决方案是将这些缩写映射到与 GMT 的偏移量的库。都不是moment-timezone , 也不 date-fns-tz , 也不 luxon , 也不 timezone-support这样做,但是 timezone-abbr-offsets确实是 very minimalistic .

幸运的是,new Date() 可以解析你的格式减去时区,所以我们将把它分开并计算偏移量:

import timezones from 'timezone-abbr-offsets';

function abbrTzToUtc(dateString) {
// Get the date and the timezone from the input string
let [, date, tz] = dateString.match(/^(.*)\s+(\w+)$/);
// Ignore the timezone and parse the date as GMT
date = new Date(date + 'Z');
// Add the offset caused by the original timezone
date = new Date(date.getTime() + timezones[tz] * 60 * 1000);
return date;
}

console.log(abbrTzToUtc('Tue, 30 Jul 2019 21:15:53 MET'));

作为测试,上面的代码应该返回 2019-07-30T22:15:53.000Z

如果您想要自 Unix 纪元以来的毫秒数,请改为返回 date.getTime()

关于javascript - 如何在 Javascript 中将带有 3 个字母时区缩写的日期转换为 UTC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57280292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com