ZonedDateTime.now() вызывает org.threeten.bp.zone.ZoneRulesException

Я только что нашел эту библиотеку для использования java.time из Java 8 на Android. В моем TimePickerDialog я спрашиваю время, и после этого я должен отправить HTTP-запрос на сервер с объектом Date в нем (с временем из диалога), в этом формате: "YYYY-MM-DDTHH:MM:SS+HH:MM" Я начал пробовать с обычными классами ( Calendar, Date, SimpleDateFormat), но через некоторое время я сдался и стал искать более чистое решение и нашел класс ZonedDateTime из Java 8. Похоже, это именно тот класс, который я хочу использовать, но когда я пытаюсь создать его экземпляр с помощью ZonedDateTime.now(), я получаю следующий стек:

org.threeten.bp.zone.ZoneRulesException: No time-zone data files registered
  at org.threeten.bp.zone.ZoneRulesProvider.getProvider(ZoneRulesProvider.java:176)
  at org.threeten.bp.zone.ZoneRulesProvider.getRules(ZoneRulesProvider.java:133)
  at org.threeten.bp.ZoneRegion.ofId(ZoneRegion.java:143)
  at org.threeten.bp.ZoneId.of(ZoneId.java:357)
  at org.threeten.bp.ZoneId.of(ZoneId.java:285)
  at org.threeten.bp.ZoneId.systemDefault(ZoneId.java:244)
  at org.threeten.bp.Clock.systemDefaultZone(Clock.java:137)
  at org.threeten.bp.ZonedDateTime.now(ZonedDateTime.java:168)
  at eu.arrowhead.arrowheaddemo.ReservationsActivity.onTimeSet(ReservationsActivity.java:162)
  at eu.arrowhead.arrowheaddemo.TimePickerFragment.onTimeSet(TimePickerFragment.java:56)
  at android.app.TimePickerDialog.onClick(TimePickerDialog.java:141)
  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:164)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:154)
  at android.app.ActivityThread.main(ActivityThread.java:6077)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

Я сделал AndroidThreeTen.init(this); в соответствии с документацией в моем классе приложения (в onCreate), поэтому я не знаю, что вызывает проблему.

Бонусный вопрос: как только я заработал, и у меня есть дата, которую я хочу отправить в объекте ZonedDateTime, как мне преобразовать ее в простой java.util.Date? Заранее большое спасибо.

EDIT: доказательство инициализации:

public class MyApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        AndroidThreeTen.init(this);
    }
}

Кстати уровень API 24.


person Zoltán Umlauf    schedule 12.10.2016    source источник
comment
Вы можете показать свой файл gradle?   -  person Opiatefuchs    schedule 12.10.2016
comment
компиляция 'com.jakewharton.threetenabp:threetenabp:1.0.4' находится в зависимостях   -  person Zoltán Umlauf    schedule 12.10.2016
comment
Можете ли вы показать часть, где вы устанавливаете AndroidThreeTen.init()?   -  person Opiatefuchs    schedule 12.10.2016
comment
Касательные: обычно лучше всего обмениваться данными в формате UTC, а не в часовом поясе. Используйте Instant.toString() для создания строки в стандартном формате ISO 8601. И не путайте объекты даты и времени со строками, которые они генерируют для представления своего внутреннего значения. С HTTP-запросом вы отправляете/получаете текст, а не объекты. Вам нужно разобрать полученный текст в объект даты и времени, а для отправки попросить объект даты и времени сгенерировать строку. Строки различны и разделены. Строки имеют формат, а объекты нет.   -  person Basil Bourque    schedule 12.10.2016
comment
К вашему сведению: как использовать ThreeTenABP в Android   -  person Basil Bourque    schedule 14.10.2016
comment
Использует ли ваш AndroidManifest MyApplication в качестве класса приложения? если не ваше MyApplication onCreate никогда не будет использоваться   -  person Vincent D.    schedule 21.10.2016
comment
хороший совет. Вероятно, это то, что я забыл сделать 9 дней назад, хотя сейчас я не могу попробовать, я использовал другое решение/библиотеку.   -  person Zoltán Umlauf    schedule 22.10.2016
comment
для всех, кто сюда попадает: используйте это в своем теге приложения в своем AndroidManifest: android:name=.MyApplication   -  person Zoltán Umlauf    schedule 22.10.2016