У меня есть метод, который анализирует строку в соответствии с Iso8601 и возвращает LocalDateTime. Теперь я принимаю возможные смещения. Проблема теперь в том, что мне нужно преобразовать смещение в UT C и вернуть его как LocalDateTime.
До сих пор я пытался работать с Instant, OffsetDateTime, ZonedDateTime. Я всегда получаю обратное. Вместо +06: 00 мой результат будет отображаться как -06: 00.
return LocalDateTime.ofInstant(Instant.from(OffsetDateTime.parse(date, buildIso8601Formatter())), ZoneOffset.UTC);
Это решение работает так же, как и мои другие опробованные, которые я упоминал выше.
Я знаю, что это не обычный способ сделать это, и я провел много исследований из-за этого, но текущая архитектура позволяет мне делать это только так.
РЕДАКТИРОВАТЬ пример: с реализация, подобная этой:
OffsetDateTime offsetDateTime = OffsetDateTime.parse(date, buildIso8601Formatter());
Instant instant = offsetDateTime.toInstant();
return LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
Допустим, я получаю "2020-01-12T08:30+06:00"
в качестве ввода для моего метода. Я должен вернуть LocalDateTime.
В результате я хочу получить "2020-01-12T14:30"
, вместо этого, моим лучшим решением было получить противоположный путь: "2020-01-12T02:30"
.