есть небольшая проблема в Java: у меня есть две строки, представляющие дату (например, «2019-11-10») и время (например, «01: 23: 45.123»). Преобразовать их в метку времени UTC достаточно просто, но есть одна проблема:
Дата указывается в местном часовом поясе, например, «America / New_York», а время указывается в UTC, поэтому следующееинформация ...
date = "2019-11-10"
, time="01:23:45.123"
(при условии местного часового пояса "America/New_York"
для части даты)
... фактически будет временем UTC "2019-11-11 01:23:45.123"
(поскольку только это будет нью-йоркская дата «2019-11-10»).
Предлагает ли Java Time API или joda time какой-либо удобный способ сделать это преобразование, сохраняя также такие детали, как DST и т. д. в уме? Есть ли (относительно) простой способ сделать это вообще?
Редактировать:
Возможно, это было немного неясно. Позвольте мне попытаться объяснить это с другой стороны:
Предполагая, что у меня DateTime x (в UTC) составляет "2019-11-11 01:23:45.123"
.
Тогда я могу получить часть даты y (как видно из"America / New_York"), просто преобразовав x в соответствующий часовой пояс и форматируя соответственно -> "2019-11-10"
.
Я также могу получить часть времени z (как видно в UTC), просто отформатировав соответственно -"01:23:45.123"
.
Теперь, предполагая, что у меня есть y и z - Как я могу получить x?
Редактировать 2:
Я только что понял, это будет никогда не работает идеально. Причина:
UTC "2019-11-04 04: 01: 00.000" -> США / Нью-Йорк: "2019-11-03 23:01"
UTC "2019-11-0304: 01: 00.000 "-> США / Нью-Йорк:" 2019-11-03 00:01 "
Так что, если я только получил информацию," дата в США / Нью-Йорке "равна" 2019-11-03«плюс» время в UTC »это« 04: 01: 00.000 », на самом деле возможны два решения, а не только одно.