Java 获取军事时区缩写

Java 获取军事时区缩写,java,timezone,jodatime,abbreviation,Java,Timezone,Jodatime,Abbreviation,我有一个org.joda.time.DateTime对象,我需要检索军用时区缩写(例如UTC-07:00的T,UTC-08:00的U,UTC±00:00的Z) 看 以下是我目前的做法: int offset = dt.getZone().toTimeZone().getRawOffset() / (60 * 60 * 1000); String timeZoneCode = timeZoneCodeMap.get(offset); 其中timeZoneCodeMap是一个HashMap,它用如

我有一个
org.joda.time.DateTime
对象,我需要检索军用时区缩写(例如UTC-07:00的T,UTC-08:00的U,UTC±00:00的Z

以下是我目前的做法:

int offset = dt.getZone().toTimeZone().getRawOffset() / (60 * 60 * 1000);
String timeZoneCode = timeZoneCodeMap.get(offset);
其中
timeZoneCodeMap
是一个
HashMap
,它用如下条目初始化

timeZoneCodeMap.put(1, "A");
timeZoneCodeMap.put(2, "B");
timeZoneCodeMap.put(3, "C");
...
timeZoneCodeMap.put(-10, "W");
timeZoneCodeMap.put(-11, "X");
timeZoneCodeMap.put(-12, "Y");      
timeZoneCodeMap.put(0, "Z");
是否存在已包含时区到军事缩写映射的函数或库(Joda或其他形式)


请随时告诉我是否有更好的方法来计算偏移量。

这是一个非常小的代码,您最好自己做

static final String MAPPING = "YXWVUTSRQPONZABCDEFGHIKLM";
...
  String timeZoneCode = MAPPING.substring(offset + 12, offset + 13);

正如亚西尔亚斯指出的那样,美国没有这样的支持。是Joda Time的继承者,并与即将推出的Java8集成。如果您关心这个特性,您可以与JSR团队联系,了解如何添加支持。这可能只是一个添加格式化程序实现的问题(我不知道,我还没有考虑清楚)。团队过去对贡献者开放,并且可能仍然接受您的输入或代码捐赠。编写您自己的方法有什么不好?因为可能已经存在更好的方法。请注意,并非所有时区都使用整小时。相当多的时区使用半小时和四分之一小时,直到1955年,孟买时间是UTC+4:51。接受这一点作为使用哈希图的更聪明的替代方案,假设偏移量已经标准化为半小时和四分之一小时,正如@Ben在他对我的问题的评论中提到的那样。