Я работаю в компании, где часть работы в течение дня выполняется в ранние часы следующего дня (то есть, доставка заказов). Теперь для нескольких процессов (в основном, отчетов) мы хотим, чтобы «рабочий день» заканчивался на 04:00
на следующее утро, чтобы мы получали более согласованные значения отчетов в день.
Мы хотим, чтобы это всегда было в 04:00 на следующее утро, и, поскольку на нас влияет летнее время в нашем регионе (Европа - Нидерланды), мы фактически хотим сдвинуть вариант нашего нормального часового пояса на 4 часа со смещением «Европа / Амстердам». (в нашем случае).
Чтобы сделать это простым в использовании для всех приложений в нашей компании, я хотел бы создать небольшую библиотеку, которая просто содержит код, чтобы мои коллеги получили модифицированный экземпляр TimeZone
, который делает это. Таким образом, все обычные методы манипуляции с датой и временем могут использоваться вместе с этим специальным часовым поясом.
Я глубоко погрузился в стандартный код Java 8 / Javadoc, связанный с экземплярами TimeZone / ZoneInfo, и в данный момент я не понимаю, какое правильное поле следует изменить в возвращенном экземпляре TimeZone / ZoneInfo.
На данный момент, мое лучшее предположение - установить RawOffset на 4 часа, но я не уверен.
Как правильно достичь моей цели?
Обновление:
Я посмотрел на предложенный LocalTime
и, как я и ожидал: ему нужно определение часового пояса, как того, которое следует использовать в качестве «Локального» при преобразовании существующей временной метки (обычно миллисекундных эпох) в «Локальный» часовой пояс.
Глядя на все эти классы, мне кажется, что я буду использовать LocalDate
чаще, чем LocalTime
.
Фактически код, который я ожидаю получить, выглядит примерно так:
long epoch = 1525033875230L; // Obtained from some dataset
LocalDate localDate = LocalDateTime
.ofInstant(Instant.ofEpochMilli(epoch),
ZoneId.of("Europe/Amsterdam"))
.toLocalDate();
Где я ожидаю, что мне нужно изменить эту Зону на «правильную».