java-日期时区在查找位置“ 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
有什么办法可以获取美国/蓬塔阿雷纳斯位置的时区?任何帮助表示赞赏.
解决方法:
乔达时代
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项目现在处于维护模式.它的创建者Stephen Colebourne继续领导JSR 310及其在Java 8及更高版本中的实现java.time.这是Joda-Time的正式继任者.
在Java的java.time包中,您将找到ZoneId.of.
ZoneId zoneId = ZoneId.of("America/Punta_Arenas");
三十倒退
许多java.time功能都已反向移植到Java 6& StephenT.Colebourne领导的另一个项目“ ThreeTen-Backport”项目中的第7个.
在这里,您将找到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");
希望能有所帮助
标签:timezone,jodatime,google-location-services,java,date 来源: https://codeday.me/bug/20191024/1923366.html