You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据Locale将时区缩写(如PST)转换为标准时区ID?

问题描述

Java标准库或JodaTime等工具包中是否存在方法,可将PST等时区缩写转换为符合Locale的时区全名?例如,PST可能对应Asia/Manila、America/Los_Angeles、America/Vancouver等,具体取决于用户所在地区(菲律宾、美国、加拿大等)。我了解JDK或JodaTime中提供getAvailableIDs方法,但该方法仅返回完整的时区列表,无法指导用户在仅输入PST时选择合适的时区。理想情况下,应有工具可借助Locale选择最匹配或最相关的时区。

解决方案

经过验证,可通过Java 8+的DateTimeFormatter结合Locale来实现基于地区的时区缩写解析,代码示例如下:

ZoneId zone = ZoneId.from(DateTimeFormatter.ofPattern("z", Locale.US).parse("MST"));
System.out.println(zone.getId());

zone = ZoneId.from(DateTimeFormatter.ofPattern("z", Locale.CANADA).parse("MST"));
System.out.println(zone.getId());

运行结果:

America/Denver
America/Edmonton

该方案并非完美,例如使用Locale.CHINA解析CST时仍返回America/Chicago而非中国时区,但相比直接猜测歧义时区,已接近需求。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:52:03