ТЛ; др
LocalDate.now()
LocalDate
Если на самом деле вам нужна только дата без времени, используйте LocalDate
class.
Класс LocalDate
представляет значение только для даты без времени суток и без часового пояса.
Часовой пояс имеет решающее значение при определении даты. В любой момент времени дата меняется по всему земному шару в зависимости от зоны. Например, через несколько минут после полуночи в Париж Франция - это новый день, а еще «вчера» в Монреаль Квебек .
Укажите собственное имя часового пояса в формате continent/region
, например America/Montreal
, Africa/Casablanca
или Pacific/Auckland
. Никогда не используйте 3-4-буквенное сокращение, такое как EST
или IST
, поскольку они не истинные часовые пояса, не стандартизированы и даже не уникальны (!).
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
ZonedDateTime
Если вы хотите, чтобы дата с временем суток была установлена на первый момент дня, попросите java.time определить этот момент для вас. Не думайте, что первый момент в 00:00:00. Аномалии, такие как переход на летнее время, означают, что первый момент может возникнуть в другое время, например 01:00:00.
Используйте этот объект часового пояса, ZoneId
, для создания ZonedDateTime
объекта.
ZonedDateTime zdt = today.atStartOfDay( z ); // Determine the first moment of the day on this date for this time zone.
Чтобы просмотреть этот момент в качестве значения в формате UTC, извлеките объект Instant
.
Instant instant = zdt.toInstant();
Избегайте устаревших классов даты и времени
Избегайте проблемных старых классов даты и времени, таких как Calendar
. Теперь они унаследованы, заменены классами java.time.
О java.time
Инфраструктура java.time встроена в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
Проект Joda-Time , который теперь находится в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Где взять классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .