【问题标题】:java: how to get Timezone abbreviation (from offset)?java:如何获取时区缩写(从偏移量)?
【发布时间】:2017-02-20 09:52:28
【问题描述】:

我的代码如下所示,我使用的是 android。我发现不同的设备可能有不同的结果。

使用不同的电话:我可以得到:“EST”或“GMT-05:00”。

但是,我只想得到缩写(就像“EST”一样)。

如何获得缩写(或将偏移更改为缩写)?

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

【问题讨论】:

  • 您的意思是默认语言环境的时区吗?还是特定的 ZonedDateTime 值?
  • 默认语言环境的时区
  • 我大概得到了答案,手机可以返回“GMT-05:00”的原因,因为手机将它的语言更改为中文。因此,如果我将代码更改为 getDisplayName(false, TimeZone.SHORT,Locale.US),它将返回“EST”

标签: java time timezone abbreviation


【解决方案1】:

如果其他人需要解决方案:我只需调整代码并获得所需的短名称,我需要将其显示给用户。

private static String getTimeZoneShortName() {

    String tz = TimeZone.getDefault().getDisplayName();

    String[] stz = tz.split(" ");

    StringBuilder sName = new StringBuilder();

    for (int i = 0; i < stz.length; i++) {
        sName.append(stz[i].charAt(0));
    }
    return sName.toString();
}

【讨论】:

  • 使用 Kotlin:TimeZone.getDefault().displayName.split(" ").map { it[0] }.joinToString("")
  • 棘手的解决方案,但老实说我不建议这样做。缩写并不总是与显示名称的第一个字母相同,您可以在此处查看所有缩写的列表并进行比较:en.wikipedia.org/wiki/List_of_time_zone_abbreviations
猜你喜欢
  • 2013-10-15
  • 1970-01-01
  • 2021-12-04
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 2021-04-11
相关资源
最近更新 更多