如何从偏移量获取时区名称?

3
我正在使用moment timezone进行时区计算。我从数据库中得到了一些偏移量数据,如GMTGMT+1GMT+2GMT+3GMT+4等。
是否有任何方法可以从这些数据中获取时区或时区名称,例如"America/Los_Angeles"?
3个回答

6

不是我有意冒犯,但是说真的——我需要喊多少次,用多大的声音才能让大家明白这一点呢?

时区 ≠ 偏移量

我的意思是——这只在标签头部和时区标签维基的正文中提到:

image

...

image

我并不是没有回答过这个问题,或者那个问题,或者将其添加到最佳实践文档中,或者在可能有数百篇其他帖子中加入了“时区!=偏移量”的评论……

也许我会穿着“时区!=偏移量”的衬衫,在一个备受瞩目的开发者大会上谈论这个问题,以便它能够深入人心。哦,等等——我已经做过了

image

提前道歉,因为这个嘲讽的回答,但是把它作为重复的重复的重复的关闭并不那么有趣。


感谢@Matt Johnson..很抱歉给您带来不便。我对时区不太熟悉,而且我正在处理一个生产应用程序的问题。 - Vinz and Tonz
1
没问题,这并不会造成任何不便。我为之前的回答有些傲慢向您道歉。我非常乐意帮助解决这些问题,如果您还有疑问,请随时提出。只是这个特定问题一再出现,事实上,时间偏移和时区是完全不同的概念。然而,如果您只使用固定的时区偏移量,请记住 moment.js 有 utcOffset 函数支持这些操作。它们只是没有真实世界时区的任何属性,例如夏令时和其他历史变化。 - Matt Johnson-Pint

0

你能否提供一两个输入日期的样例? - Nikhil Maheshwari

0

Matt的回答是正确的,但在某些情况下,人们仍然需要从偏移量中获取最接近(而不是最准确)的时区名称。您可以使用moment-timezone包。以下是一些TypeScript代码,用于从偏移量获取时区名称映射。

const timeZoneCache = new Map<string, string>();
const allTimeZoneNames = moment.tz.names();
const currDate = moment();
for (const timeZoneName of allTimeZoneNames) {
    timeZoneCache.set(currDate.tz(timeZoneName).format("Z"), timeZoneName);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接