问题 Joda Time - 获取时区名称?


我的时区是UTC + 03:00。它存储在DateTimeZone对象中。如何将其转换为真实姓名,即 东非时间/ EAT 


12325
2018-04-14 01:38


起源

文档中没有任何用处吗? joda-time.sourceforge.net/apidocs/org/joda/time/... - FoolishSeth
@FoolishSeth - 使用DateTimeZone的getName()和getID()。现在尝试getNameProvider()。 - david blaine
为相关链接添加书签 - dxing.com/utcgmt.htm - david blaine
我将什么参数放入其中 - String getShortName(Locale locale,String id,String nameKey)? - david blaine
阅读问题的答案 stackoverflow.com/questions/1718484/...。一个偏移量可以有多个与之相关的实名。 - atmelino


答案:


使用joda,可以获得时区缩写或名称,如下所示

DateTimeZone dz = DateTimeZone.forID("America/New_York");
String tzid = dz.getShortName(DateTimeUtils.currentTimeMillis());
//tzid will be 'EST'

String longerTimeZoneName = dz.getName(DateTimeUtils.currentTimeMillis());
//longerTimeZoneName  will be 'Eastern Standard Time'

10
2017-11-12 18:21





使用方法 时区#getDisplayName() 

DateTimeZone tz = //...  
tz.toTimeZone().getDisplayName();

5
2018-04-14 21:00





我无法在JodaTime中找到任何可以提供良好可读名称的内容。根据我的经验,DateTimeZone.getName()返回id而不是更有用的名称。所以我只能得到“America / New_York”,而不是“东部标准时间”。

TimeZone.getDisplayName的建议似乎假设您使用的是Java中的TimeZone,而不是Joda。我看不到JodaTime的getDisplayName()。


1
2018-06-04 18:25