Преобразование LocalDateTime в любой часовой пояс в любой часовой пояс в Java
- Предположим, мой
LocalDateTime
в IST, т.е. (2020-08-14T15:41) - Необходимо преобразовать этот IST
LocalDateTime
в любой часовой пояс, скажем, от IST до UTC
Обязательный вывод: 2020-08-14T10:11 // означает 10:11, пятница, 14 августа 2020 г.
Если есть LocalDateTime
из любого пояса, тогда будет получено время UTC, соответствующее времени UTC относительно времени любого часового пояса.
Получил общее решение для преобразования LocalDateTime из любого часового пояса в любой часовой пояс:
LocalDateTime localDateTimeOfFromTimeZone = LocalDateTime.now();//it's takes your default application LocalDateTime
System.out.println("From LocalDateTime : "+localDateTimeOfFromTimeZone);
ZonedDateTime fromTimeZonedDateTime = localDateTimeOfFromTimeZone.atZone(fromTimeZoneId);
LocalDateTime localDateTimeOfToTimeZone = LocalDateTime.from(fromTimeZonedDateTime.withZoneSameInstant(toTimeZoneId));
System.out.println("Converted To LocalDateTime :"+localDateTimeOfToTimeZone);
Или
LocalDateTime newDateTime = oldDateTime.atZone(oldZone).withZoneSameInstant(newZone).toLocalDateTime();
1 ответ
Я не рекомендую использовать LocalDateTime
для даты и времени в часовом поясе. ZonedDateTime
класс для этого. АLocalDateTime
это точно дата и время без часового пояса.
ZoneId fromTimeZoneId = ZoneId.of("Asia/Kolkata");
ZoneId toTimeZoneId = ZoneId.of("Etc/UTC");
ZonedDateTime dateTimeOfFromTimeZone = ZonedDateTime.now(fromTimeZoneId);
System.out.println("From ZonedDateTime: " + dateTimeOfFromTimeZone);
ZonedDateTime dateTimeOfToTimeZone
= dateTimeOfFromTimeZone.withZoneSameInstant(toTimeZoneId);
System.out.println("Converted To ZonedDateTime: " + dateTimeOfToTimeZone);
Вывод, когда я только что запустил код:
From ZonedDateTime: 2020-08-15T00:13:19.519646+05:30[Asia/Kolkata] Converted To ZonedDateTime: 2020-08-14T18:43:19.519646Z[Etc/UTC]
Когда используешь ZonedDateTime
скорее, чем LocalDateTime
, Java отслеживает часовой пояс каждого объекта даты и времени, что значительно усложняет возможность ошибок при преобразованиях. Преимущество, которое сложно переоценить.