Я хочу передать строку даты и проверить, не предшествует ли эта дата текущему времени MST.
Я хочу иметь возможность надежно протестировать это локально и при развертывании. .
Я живу в Великобритании. И когда я его развертываю, сервер находится в Фениксе.
Сейчас в Великобритании время 2024-06-28 15.45.00, и эта логика выдает true для isValidDate в настоящее время, когда Я прохожу 28.06.2024 15.00.00.
Но я устанавливаю зону на MST. Я ожидал, что это ложь.
Сейчас время MST около 8 утра. Так что не раньше. Кажется, он продолжает работать по британскому времени.
Как я могу обновить это, чтобы при развертывании он проверял строку даты по времени MST.
И продолжал локально тоже баллотироваться от MST? По сути, если я окажусь на другом сервере в Австралии, логика должна продолжать работать по времени MST.
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH.mm.ss");
private static final ZoneId MST_TIMEZONE = ZoneId.of("America/Phoenix");
// Spring bean set to Clock.systemDefaultZone(); Can't change this.
// using a clock for unit testing purposes.
private final Clock clock;
private ZonedDateTime parseDate(String dateStr) {
try {
return LocalDateTime
.parse(dateStr, DATE_FORMATTER)
.atZone(MST_TIMEZONE);
} catch (DateTimeParseException e) {
return null;
}
}
private boolean isValidDate(String startDateTime) {
ZonedDateTime start = parseDate(startDateTime);
return start != null
&& start.isBefore(LocalDateTime.now(clock).atZone(MST_TIMEZONE));
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... comparison
Согласованный часовой пояс для сравнения дат ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение