有没有办法在浏览器 Javascript 中获取时区缩写?
Is there a way to get time zone abbreviations in browser Javascript?
我可以使用 Intl.DateTimeFormat().resolvedOptions().timeZone
获取 tz 名称 - 例如,在我的浏览器中,America/Los_Angeles
。有没有办法获取时区的缩写(在问这个问题时,PDT)?
是的,您可以只格式化时区名称的缩写形式,然后将其从格式化部分中提取出来,如下所示:
Intl.DateTimeFormat('en', {timeZoneName: 'short'}).formatToParts().find(p => p.type === 'timeZoneName').value
不过请记住以下几点:
语言很重要。 'en'
这里是英文。您可以传递 undefined
以使用最终用户的语言,但并非所有语言都定义了时区缩写。
具体日期和时间很重要。 formatToParts
接受一个 Date
对象,但如果不存在(或 undefined
),它会使用 当前 日期和时间。
并非所有时区缩写都定义明确。
并非所有时区缩写的使用都是一致的。
并非所有时区缩写都是唯一的。
并非所有时区都有缩写。
因此,我强烈建议您尽可能避免使用时区缩写。
我可以使用 Intl.DateTimeFormat().resolvedOptions().timeZone
获取 tz 名称 - 例如,在我的浏览器中,America/Los_Angeles
。有没有办法获取时区的缩写(在问这个问题时,PDT)?
是的,您可以只格式化时区名称的缩写形式,然后将其从格式化部分中提取出来,如下所示:
Intl.DateTimeFormat('en', {timeZoneName: 'short'}).formatToParts().find(p => p.type === 'timeZoneName').value
不过请记住以下几点:
语言很重要。
'en'
这里是英文。您可以传递undefined
以使用最终用户的语言,但并非所有语言都定义了时区缩写。具体日期和时间很重要。
formatToParts
接受一个Date
对象,但如果不存在(或undefined
),它会使用 当前 日期和时间。并非所有时区缩写都定义明确。
并非所有时区缩写的使用都是一致的。
并非所有时区缩写都是唯一的。
并非所有时区都有缩写。
因此,我强烈建议您尽可能避免使用时区缩写。