TL; др
LocalDate.now(ZoneId.of("America/Montreal"))
часового пояса
В любой данный момент, дата изменяется по всему миру от временной зоны. Например, в полдень в Окленде NZ он все еще «вчера» в Монреале Квебеке.
Хотя дата может перевернуться в часовом поясе вашего разума, дата может быть «вчера» в часовом поясе JVM.
Всегда указывайте часовой пояс. Если опустить, текущий часовой пояс JVM неявно применяется. Это значение по умолчанию может быть изменено в любое время во время времени выполнения любым кодом в той же JVM.
Указать proper time zone name в формате continent/region
, такие как America/Montreal
, Africa/Casablanca
или Pacific/Auckland
. Никогда не используйте аббревиатуру 3-4 буквы, такую как EST
или IST
, поскольку они не являются настоящими часовыми поясами, а не стандартизированы и даже не уникальны (!).
LocalDate
Вы используете хлопотно старые классы даты и времени, теперь наследство, вытесняли классами java.time.
Класс LocalDate
представляет собой значение только для даты без времени суток и без часового пояса.
ZoneId z = ZoneId.of("America/Montreal");
LocalDate today = LocalDate.now(z);
Объекты даты не обновляются автоматически с помощью часов. Каждый раз, когда вы хотите проверить дату, вы должны снова позвонить LocalDate.of
, чтобы сгенерировать новый объект с датой, как это было в тот момент создания.
О java.time
java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытесняют неприятные старые legacy классы времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time, теперь в maintenance mode, советует перейти на java.time.
Чтобы узнать больше, см. Oracle Tutorial. И поиск Stack Overflow для многих примеров и объяснений. Спецификация: JSR 310.
Где получить классы java.time?
- Java SE 8 и SE 9, а затем
- Встроенный.
- Часть стандартного Java API с объединенной реализацией.
- Java 9 добавляет некоторые незначительные функции и исправления.
- Java SE 6 и SE 7
- Большая часть функциональности java.time будет обратно портирован на Java 6 & 7 в ThreeTen-Backport.
- Android
- Проект ThreeTenABP адаптирует ThreeTen-Backport (как упоминалось выше) для Android специально.
- См. How to use….
Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more.
Вы также вызываете 'new Date()' на следующий день? – SMA
В каком часовом поясе вы находитесь? –
Где он извлекает данные с сервера времени? –