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
? Заранее большое спасибо.
РЕДАКТИРОВАТЬ: доказательство для init:
public class MyApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
AndroidThreeTen.init(this);
}
}
Кстати API уровень 24.