Я отправляю зонированную дату с помощью Joda из Android в серверную службу с помощью ZonedDateTime, но в серверной части дата всегда "UTC".
Проблема: Мне нужно сделать приложение расписания, которое работает в любой стране.
Я отправляю из своего Android-приложения дату с часовым поясом. Хорошо, я делаю это с Джодой и Джексоном, например:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssZ")
private DateTime startDate;
Хорошо, это отправка
2018-04-16T16:41:38-0300
Пока здесь, я думаю, все в порядке.
В моем бэкэнд-сервисе (Spring с Джексоном) я использую ZonedDateTime:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssZ")
private ZonedDateTime startDate;
И результат всегда UTC :(
2018-04-16T19:41:38Z[UTC]
Я вхожу в систему с помощью Syso - System.out.println (body.getStartDate ()).
В бэкэнде я просто перешел с ZonedDateTime на LocalDateTime. И теперь я думаю, что это работает с зонированным временем. В моей голове это не имеет смысла .. о_О




Ради интереса, как вы регистрируете последнюю строку вывода? Возможно, что-то негласно конвертирует его в UTC? (Очевидно, что смещение UTC удается прочитать.) В качестве отдельного примечания, знание смещения UTC на самом деле не дает вам часового пояса. Если вы хотите, чтобы что-то происходило в (скажем, «15:00 каждый вторник в Лондоне»), то знание того, что смещение это вторника равно UTC + 1, вам не очень поможет. Так что вы можете в любом случае рассмотреть возможность отправки идентификатора часового пояса отдельно.