【问题标题】:Get Current TimeZone Abbrevation Android获取当前时区缩写 Android
【发布时间】:2022-01-08 04:24:34
【问题描述】:

是否有任何库可以让我在此列表中获得 Android 的当前时区缩写:https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations

例如,我在土耳其,土耳其的时区缩写是 TRT,我想向用户显示它? 这是我目前使用的代码:

fun getTimeZoneAbbrevation():String {
val id = TimeZone.getDefault().id
return ZoneId.of(id).getDisplayName(TextStyle.SHORT_STANDALONE, Locale.ENGLISH)  }

我从这个函数得到的结果是“Europe/Istanbul”,除了 TRT。

【问题讨论】:

  • 也许你正在寻找这个:stackoverflow.com/a/56183335/2827025
  • 我尝试了这些解决方案,但对我不起作用:(
  • 在这种情况下,添加您使用的代码以便其他人可以帮助您会有所帮助。
  • 现在,我编辑了我的问题,谢谢 :)!
  • 仅供参考,这些缩写是不是实时时区,不是标准化的,也不是唯一的!对于日期时间工作,请使用Continent/Region 格式的实时时区名称,例如Europe/Istanbul

标签: java android kotlin timezone


【解决方案1】:

这应该可行:

    val zone = ZonedDateTime.now(ZoneId.systemDefault()).zone
    println(zone.getDisplayName(TextStyle.SHORT_STANDALONE, Locale.ENGLISH))

当我输入 Europe/Istanbul 我得到 TRT:

    val zone = ZoneId.of("Europe/Istanbul")
    println(zone.getDisplayName(TextStyle.SHORT_STANDALONE, Locale.ENGLISH))

如果代码无法在您的系统上运行,那就太奇怪了。

我已将默认时区更改为伊斯坦布尔,并且在运行第一个代码块时得到 TRT:

【讨论】:

  • 谢谢。 如果代码不能在您的系统上运行,那就太奇怪了。 在那种情况下,情况就非常奇怪了。 OP 所做的似乎与您所做的实际上相同。短显示名称取自语言环境数据。桌面 Java 和 Android 以及 Java 版本之间的区域设置数据不同。
  • 我们观察到了差异(如果要相信 OP,我不明白为什么在这种情况下不这样做)。我还在我的计算机上观察到 Java 8 和 Java 15 之间的差异(请参阅问题下的我的 cmets)。
  • @OleV.V.好的,谢谢你的评论。
  • 感谢大家的回答!但在 Android 中,它仍然打印 Europe/Istanbul。但你是对的,在 IntelliJ 中它显示 TRT。我认为对于 Android 来说是不同的。
  • @AbdulsametKılınçarslan 有趣,你似乎是对的。
猜你喜欢
  • 2023-04-04
  • 2015-10-16
  • 1970-01-01
  • 2013-04-18
  • 2013-11-26
  • 1970-01-01
  • 2010-12-09
  • 2020-04-28
  • 1970-01-01
相关资源
最近更新 更多