gpt4 book ai didi

android - 如何在android中获取移动时区的缩写/国家代码?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:14:06 25 4
gpt4 key购买 nike

如何获取时区缩写,如 IST(印度标准时间)、ET(东部时间)等。

我已经使用下面的代码来获取android中的时区信息,

选项 1:

String mobileTimeZone =  Calendar.getInstance().getTimeZone()
.getDisplayName(false, TimeZone.SHORT);

我选择了不同的时区,输出如下,

GMT+13:00

GMT+00:00

但是当设置一些时区时,它会给我正确的缩写代码作为下面的输出,

EST

我还尝试了下面的代码,它给出了时区的完整描述。

选项 2:

String mobileTimeZone = Calendar.getInstance().getTimeZone().getID();

获取以下输出,它只是区域名称:

Pacific/Midway

Pacific/Honolulu

America/Montevideo

是否有包含所有时区的 id 或表的列表供我映射。

并且还需要考虑夏令时。

帮我从android mobile上获取Time Zone的缩写。

最佳答案

关于术语:

我们称“America/Denver”等字符串(格式为地区/城市)时区标识符,而不是名称。这些 id 在 IANA-TZDB 中定义。 时区名称和缩写是一个完全不同的概念。这些数据通常起源于 CLDR 文件(来自 Unicode 联盟,例如 here )并且符合大多数人在其本地环境中的期望。这些名称是高度本地化的。一般来说,没有国际标准,无论是标识符还是名称。后者只是遵循本地的习俗。

映射:

可以在 IANA-TZDB 中找到从时区标识符到国家代码的映射,反之亦然。 .然后您可以快速看到没有您期望的唯一映射。示例:

Europe/Zurich can be valid in Switzerland, Germany(sic!) and Liechtenstein.

或者简单地说:

US has more than one timezone (America/New_York, America/Chicago, etc.)

您希望使用表达式获得唯一的时区缩写

Calendar.getInstance().getTimeZone().getDisplayName(false, TimeZone.SHORT);

不现实。 您描述的获取 tz 缩写的方法是正确的。但是,正如您自己在其他 SO-post 中注意到的那样结果因一台 Android 设备而异。主要原因是不同的设备(dalvik vms)通常具有不同的时区名称数据(以及 OpenJDK-Oracle-VMs)。

从时区名称和缩写到国家代码的唯一映射通常是不可能的。反例:“IST”可以代表“印度标准时间”或以色列时区。或者:“BST”用于“欧洲/伦敦”(夏季)或“太平洋/布干维尔”(全年)。

关于夏令时:

标识符对夏令时不敏感。相关数据可以是夏令时也可以不是,这取决于相关联的时间。时区名称和缩写通常(并非总是)敏感,例如比较美国的“PST”或“PDT”。

总结与建议:

请勿将时区名称或缩写用于显示目的以外的任何用途。您不应将这些本地化数据用于任何结论或存储目的。

关于android - 如何在android中获取移动时区的缩写/国家代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29362120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com