Я работаю с API, который предоставляет мне поле ModifyDate, которое дается в CST (-06: 00), но при передаче строки во время Joda и установке часового пояса в America / Phoenix, Joda time считает, что дата / время, которые я дал, указаны в часовом поясе UT C, поскольку API не предоставляет информацию о смещении (возвращаемое время указано в CST, что подтверждается разработчиками).
Примечание: я нахожусь в Аризоне, где мы не распознаем летнее время, поэтому я не могу просто применить смещение stati c -1 часа.
Вот пример с чем я имею дело:
Поле, возвращаемое API:
"modifyDate": "2020-02-11T12:23:39.817Z"
Попытка отформатировать дату с временем Joda:
DateTime time1 = new DateTime("2020-02-11T12:23:39.817Z", DateTimeZone.forID("CST6CDT"));
System.out.println(time1);
DateTime time2 = new DateTime(time1, DateTimeZone.forID("America/Phoenix"));
System.out.println(time2);
System.out.println("----------------------------");
DateTime time3 = DateTime.parse("2020-02-11T12:23:39.817Z");
System.out.println(time3);
System.out.println(time3.toInstant());
System.out.println(time3.withZone(DateTimeZone.forID("America/Phoenix")));
System.out.println(time3.toDateTimeISO());
System.out.println(time3.toDate());
System.out.println("--------------------------------");
Выход:
2020-02-11T06:23:39.817-06:00
2020-02-11T05:23:39.817-07:00
----------------------------
2020-02-11T12:23:39.817Z
2020-02-11T12:23:39.817Z
2020-02-11T05:23:39.817-07:00
2020-02-11T12:23:39.817Z
Tue Feb 11 05:23:39 MST 2020
--------------------------------
Как видно из первых двух выходов, при попытке применить часовой пояс для CST предоставленное время смещено на -6 (ожидается, если предоставленное время было в UT C). При установке часового пояса Америка / Феникс смещение составляет -7 (также ожидается). Однако, как я уже говорил, время, которое я передаю в DateTime, составляет , а не UT C, это CST.
Как я могу сказать DateTime (или даже какую-то другую библиотеку, это важно) что время предоставляется в CST? Опять же, учитывая, что при переходе на летнее время необходимо корректно управлять смещением.