获取当前时区缩写 Android

Posted

技术标签:

【中文标题】获取当前时区缩写 Android【英文标题】:Get Current TimeZone Abbrevation 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。

【问题讨论】:

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

以上是关于获取当前时区缩写 Android的主要内容,如果未能解决你的问题,请参考以下文章

获取军事时区缩写

如何在 ICU4J 中获得“当前”IANA 时区缩写?

如何在android中获取移动时区的缩写/国家代码?

C# 英国夏令时 (BST) 时区缩写

使用 JavaScript 检测时区缩写

Java:解析日期字符串,时区缩写为Date对象