微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取特定时区的偏移量

如何解决获取特定时区的偏移量

TLDR:我需要在特定日期在 IE 中“欧洲/柏林”的区域偏移量,而不使用库或 API。我唯一可以使用的是 this timezone polyfill

我正在使用返回日期的 API,如下所示:

{ date: "2021-01-01T12:00:00Z" }

这个数据实际上是不正确的。给出的时间实际上是“欧洲/柏林”的当地时间,祖鲁时间信息有误。遗憾的是,目前无法修复 API,所以我必须解决这个问题。

我现在想使用此日期并将其与浏览器/系统时间进行比较。为此,我的方法是在 API 日期上设置正确的时区,如下所示:

const TZ_BERLIN = "+02:00";
const apiDate = "2021-01-01T12:00:00Z";

// Cut off the "Z",add the proper time zone
const correctDate = apiDate.substr(0,apiDate.length - 1) + TZ_BERLIN;

然后我可以直接比较日期。所以我必须弄清楚柏林在这一天的时区偏移(因为它可能会因夏令时而改变)。

一些限制使这个问题变得更加困难:我不能使用任何库或外部 API(这个要求在这个应用程序中是有意义的,但我不能在这里详细介绍),它必须可在所有现代浏览器和 IE 中运行。

我能够为 IE 包含一个 timezone polyfill,因此 DateTimeFormat 支持“欧洲/柏林”。

我真的不知道从这里去哪里。我可以使用这个以某种方式在 Chrome 中获取时区:

new Intl.DateTimeFormat([],{ timezone: "Europe/Berlin",timeZoneName: "short" })
    .format(new Date("2021-01-01"));
// "1/1/2021,GMT+1"

在 IE 中使用相同的命令,它打印 "‎01‎.‎01‎.‎2021"。对于 timeZoneName 参数,IE 也仅支持 shortlong - 所以我不能使用例如。 shortOffset

有没有办法在 IE 中以这种方式获取偏移量?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。