Мне нужен реальный идентификатор часового пояса, но НЕ поддельный / общий часовой пояс, такой как Etc / GMT-xxx.Я понимаю, что есть какое-то решение для получения смещения или даже «поддельного» часового пояса с помощью команд:
int offset = new Date().getTimezoneOffset();
String timezone = TimeZone.createTimeZone(offset).getID();
И в настоящее время наш проект использует это.Однако это даст вам только суммарное смещение, но вы никогда не узнаете, содержит ли это смещение смещение DST (летнее время / летнее время).Или другими словами: вы знаете, что полное смещение составляет 2 часа, но оно не скажет, действительно ли оно 2 + 0 или 1 + 1, и это действительно имеет значение в моем случае использования.
Вот наше использованиеcase: у нас есть функция, которая позволяет пользователю загружать файл Excel, где функция будет анализировать файл Excel и вставлять записи в систему.Каждая запись будет иметь разную дату и время.Наша функция должна проверить следующее:
- Если браузер TimeZone (откуда пользователь загружает файл) подчиняется DST_offset.
- Если он установлен в соответствии с DST, мы далеерешить, подпадает ли Дата под "лето".
- Затем наша система сместит дату и время соответственно сохранит в БД.
- Итак, внутри пакетного файла Excel несколько записей могутсмещение DST, а некоторые нет.
Я понимаю, что мы можем использовать Java-календарь для достижения вышеуказанной логики 1 и 2, по этой ссылке https://www.baeldung.com/java-daylight-savings. Но, однако, предварительнонеобходимо: нам нужен реальный идентификатор часового пояса, например, «Европа / Рим», но не поддельный или общий «Etc / GMT-xxx».
Пожалуйста, сообщите, как мы можем получить «реальный» идентификатор часового пояса вСмарт GWT?или есть ли альтернатива для обработки упомянутого варианта использования?