得到三个字母的短时区名称(而不是四个字母)?

lan*_*nce 5 java timezone android internationalization

我写了一个Android应用程序,需要手机当前所在的短时区名称.

我正在使用以下代码:

String timeZone = Calendar.getInstance().getTimeZone().getDisplayName(false, TimeZone.SHORT);
Run Code Online (Sandbox Code Playgroud)

在芝加哥运行时,返回"CST".在纽约,"EST".在法国斯特拉斯堡,它正在返回"HNEC"(Heure Normale de l'Europe Centrale in French).

这个位置的时区被一些人称为"中欧时间"(参见维基百科的欧洲时区).

我正在传递timeZone给第三方系统,该系统非常坚持获得"CET"(而不是"HNEC").是否有一个API调用我可以依赖它来返回三个字母(以及我认为,"更现代")的短时区名称?

随着我的代码在越来越多的位置运行,我猜这个问题也会在其他地方发生.

我真的希望避免保留某种三字母到四个字母的短时区名称的地图.

CPe*_*ins 6

对不起,你可能会卡住维护映射.三个字符实际上是较旧的,而不是更现代的版本.来自classdocs:

    为了与JDK 1.1.x兼容,还支持其他一些三字母时区ID(例如"PST","CTT","AST").但是,它们的使用已被弃用,因为相同的缩写通常用于多个时区(例如,"CST"可能是美国"中央标准时间"和"中国标准时间"),然后Java平台只能识别其中一个他们.

如果这是我的问题,我会得到我的第三方系统支持的列表并映射它.