编程语言
首页 > 编程语言> > java-日期时区在查找位置“ America / Punta_Arenas”的ID时遇到问题

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