У нас есть служба на основе ресурсов, которая берет дату и время в качестве параметров для извлечения данных из бэкэнд.Получите zoneID от запроса, чтобы преобразовать дату и время запроса в формат UTC в java 8
Данные хранятся в базе данных в формате UTC, а сервер также настроен по часовой пояс UTC.
Когда запрос получен от клиента, я хочу преобразовать дату и время в формат даты и времени в формате UTC, а затем запросить базу данных соответственно.
Для выполнения преобразования у меня есть код ниже, который преобразуется из заданного zoneId в формат UTC.
public ZonedDateTime convertDateBetweenTimeZones(LocalDateTime sourceDateTime,String sourceZone,String targetZone){
return sourceDateTime.atZone(ZoneId.of(sourceZone)).withZoneSameInstant(ZoneId.of(targetZone));
}
Я призываю выше метод, как показано ниже,
ZonedDateTime zonedDateTime=convertDateBetweenTimeZones(LocalDateTime.now(),"Asia/Calcutta","UTC");
После того, как я могу получить объект zonedDateTime Я думаю, что я могу передать его в базу данных и запросить его соответствующим образом.
Мой вопрос, в моем случае, я прошел «Азия/Калькутта» в качестве идентификатора зоны исходного часового пояса. Но исходным часовым поясом может быть что угодно, «Америка/Нью-Йорк» или даже «Азия/Сингапур».
Итак, в этом случае я не уверен, как я могу динамически получить zoneId из запроса, полученного от клиента, чтобы я мог его соответствующим образом преобразовать.
Может ли кто-нибудь помочь мне в том, как я могу получить zoneId или альтернативный способ обработки моего сценария.
Спасибо,
JavaUser