首页 > 解决方案 > 从时区缩写中获取 UTC 偏移量

问题描述

无论如何从时区缩写中获得UTC偏移量?如:

“太平洋标准时间”

为了

太平洋标准时间(北美)

这将导致UTC-08。我在时刻时区找到了一种方法,但没有太大帮助。它提供了时区标识符列表,但其中大多数已被弃用。谢谢你。

标签: javascriptnode.jsmomentjs

解决方案


这是一个相当棘手的话题,类似的问题已经讨论过了。

请参阅使用 JavaScript 检测时区缩写使用偏移值获取时区缩写

我会提出两个选择:

1.哈希表。根据标准信息(例如时区缩写及其偏移量列表)创建您需要的键值对。就像是

    let offsetByAbbrev = {"PST" : "UTC-08", "EST" : "UTC+01", ... }

但这需要认真维护,因为它会很快被弃用。

2.日期操作。您可以使用 momentjs 在特定时区创建日期,但是不能使用缩写。这有一个很好的理由:这些缩写可以改变,也可以导致歧义。您可以查看 momentjs-timezone 使用的 JSON:https ://github.com/moment/moment-timezone/blob/develop/data/packed/latest.json这将使您大致了解它的混乱程度. 例如,对 PST 执行简单的 ctrl+f 搜索并查看结果。

所以我建议使用时区名称——你可以使用 momentjs-timezone 来创建和使用。请参阅如何使用 moment.js 在特定时区创建时间,您可以在其中根据时区名称创建一个时刻对象,该对象将包含(根据时刻时区的规范:https ://momentjs.com/timezone/ docs/#/zone-object/ ) 偏移量本身。

我知道这并不能完全解决您的问题,尽管您尝试做的不一定是达到理想解决方案的最佳方法。


推荐阅读