Дата Часовой пояс имеет проблему с поиском идентификатора для местоположения "Америка / Punta_Arenas" - PullRequest
0 голосов
/ 31 января 2019

Я получаю исключение при попытке получить часовой пояс для местоположения "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

Есть ли какой-нибудь способ получить часовой пояс для местоположения Америка/ Punta_Arenas ?любая помощь приветствуется.

1 Ответ

0 голосов
/ 31 января 2019

Joda-Time

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 сейчас находится в режиме обслуживания.Его создатель, Стивен Колебурн, возглавил JSR 310 и его реализацию, java.time , найденную в Java 8 и более поздних версиях.Это официальный преемник Joda-Time.

В пакете Java java.time вы найдете ZoneId.of .

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

ThreeTen-Backport

Большая часть Java.Функция time перенесена на Java 6 & 7 в проекте ThreeTen-Backport , другом проекте, возглавляемом Стивеном Коулборном.

Там вы найдете класс 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");

Надеюсь, что поможет

...