Есть ли другой способ, кроме этих двух?
Да, есть.
LocalDate.now(
ZoneId.of( "Pacific/Auckland" )
)
java.time
Java 8 и более поздних версий поставляется с новым встроенным пакетом java.time .См. Учебное пособие .Большая часть функциональности java.time перенесена в Java 6 & 7 в ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP .
По аналогии с Joda-Time , java.time предлагает класс LocalDate
для представления значения только для даты без времени суток и без часового пояса.
Обратите внимание, что часовой пояс имеет решающее значение для определения конкретной даты.Например, в полночь в Париже дата все еще «вчера» в Монреале.
LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) ) ;
По умолчанию java.time использует стандарт ISO 8601 при создании строкового представления даты или значения даты-времени.(Еще одно сходство с Joda-Time.) Так что просто позвоните toString()
, чтобы сгенерировать текст вроде 2015-05-21
.
String output = today.toString() ;
About 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 .