日期时区在查找位置"America/Punta_Arenas"的 ID 时遇到问题



我在尝试获取位置"America/Punta_Arenas"的时区时遇到异常。我使用的是joda LocalDateTime。

import org.joda.time.{DateTime, DateTimeZone}
val timezone = DateTimeZone.forID("America/Punta_Arenas")

所以上面的语句抛出了以下异常

java.lang.IllegalArgumentException: The datetime zone id 'America/Punta_Arenas' is not recognised

有什么方法可以让我得到America/Punta_Arenas所在地的时区吗?任何帮助都将不胜感激。

Joda时间Joda Time携带自己的时区数据副本,称为tzdata。时区定义更改,因此此文件可能需要更新。

你还没有提到你正在使用的Joda Time的哪个版本,如果可能的话,首先升级到最新版本,这应该有效:

<!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency> 

java.time

Joda Time项目现在处于维护模式。它的创建者StephenColebourne继续领导JSR310及其在Java8及更高版本中发现的java.time实现。这是Joda Time的官方继任者。

在Java的java.time包中,您可以找到.的ZoneId

ZoneId zoneId = ZoneId.of("America/Punta_Arenas");

ThreeTen背包

java.time的大部分功能都是向后移植到Java6&7在ThreeTen背包项目中,另一个由Stephen Colebourne领导的项目。

在那里你可以找到org.threeten.bp.ZoneId类。

<!-- https://mvnrepository.com/artifact/org.threeten/threetenbp -->
<dependency>
<groupId>org.threeten</groupId>
<artifactId>threetenbp</artifactId>
<version>1.3.8</version>
</dependency>

代码将与上面相同,但导入不同:

import org.threeten.bp.ZoneId;
ZoneId zoneId = ZoneId.of("America/Punta_Arenas");

希望能帮助

相关内容

  • 没有找到相关文章

最新更新