Зачем вам нужен местный часовой пояс?
- Если у пользователя установлен часовой пояс в другом месте, зачем игнорировать его предпочтения?Если пользователь переопределил функцию автоматического часового пояса, это потому, что он хочет видеть моменты, представленные в определенном часовом поясе.
- При записи текущего момента, вообще говоря, вы должны записывать текущее значение в формате UTC без учета какого-либо часового пояса.
Кроме того, вы используете ужасно хлопотную дату и времяклассы, которые были вытеснены несколько лет назад классами java.time .
Чтобы зафиксировать текущий момент, используйте UTC.
Instant instant = Instant.now() ;
Для представления пользователю используйте текущий часовой пояс JVM по умолчанию.
ZoneId z = ZoneId.systemDefault() ;
ZonedDateTime zdt = instant.atZone( z ) ;
Если это важно, подтвердите это у пользователя.Или, по крайней мере, отобразите в пользовательском интерфейсе часовой пояс, который вы используете.
Две переменные instant
и zdt
представляют один и тот же одновременный момент, одну и ту же точку на временной шкале, но с другой стеной.время
Чтобы ввести встречу или событие в будущем, введите дату, время суток и зону.Соберите их в ZonedDateTime
объект.
LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;
LocalTime lt = LocalTime.of( 13 , 30 ) ;
ZoneId z = ZoneId.systemDefault() ;
ZonedDateTime zdt = ZonedDateTime.of( ld , lt , z ) ;
Чтобы сравнить с текущим моментом, получите Instant
с настройкой UTC.
Instant instant = zdt.toInstant() ;
Получить текущий момент.
Instant now = Instant.now() ;
Сравнить.
if( instant.isBefore( now ) ) {
… reject their input
}
Таким образом, вы можете видеть, что физическое местоположение пользователя не имеет отношения к вашей обработке значений даты и времени и долей времени.
Тот факт, что вы задали свой вопрос, заставляет меня подозревать, что есть какой-то аспект обработки даты и времени, который вы не полностью понимаете.Обработка даты и времени - дело трюка.Так что уточните свой вопрос или ответьте с комментарием, если вы думаете, что я не понял вашу точку зрения.