2015-11-03 6 views
0

Я получаю следующее исключение при попытке передать часовой пояс: Etc/GMT+8 для преобразования:Неожиданное часовой пояс ошибка

DateTimeZone toTimeZone = DateTimeZone.forID(toTimeZoneData); 

поднимает:

java.lang.IllegalArgumentException: The datetime zone id 'Etc/GMT+8' is not recognised - null 

Это valid timezone ID, но все-таки я получив эту ошибку. Я не знаю, почему. Я использую Joda Time 2.2.

+2

_Это действительный часовой пояс ID_ Почему вы так думаете? –

+2

Кроме того, это работает для меня. –

+0

Я получил действующий часовой пояс JODA отсюда: http://joda-time.sourceforge.net/timezones.html – Chittprakash

ответ

1

Часовые пояса хранятся в нескольких data files в банке Joda-Time и вытаскиваются из IANA, канонического источника всемирных часовых поясов. См. Соответствующую документацию Joda-Time по адресу updating the time zone data files.

Как @SotiriosDelimanolis, я проверил, что DateTimeZone.forID("Etc/GMT+8"); преуспевает на моей машине, на которой работает Joda-Time 2.3. Текущий выпуск, 2.9, должен работать аналогичным образом. Я также подтвердил, что файлы данных в 2.2 содержат зоны Etc.

Если вы получаете эту ошибку вы:

  1. работает старый или поврежденную версию Joda-Time и следует обновить.
  2. здание из источника с недопустимыми файлами данных и должно обновлять ваши файлы данных.
  3. на самом деле не проходит в строке, которую вы считаете.

Глядя на сообщение об ошибке №3, он не кажется виновным, но это, безусловно, возможно (особенно если вы не скопировали это сообщение напрямую).