ТЛ; др
int lengthOfMonth =
YearMonth.from(
LocalDate.now( ZoneId.of( "America/Montreal" ) )
)
.lengthOfMonth() ;
java.time
Ответ Джона Скита правильный, но сейчас устарел. Проект Joda-Time теперь находится в режиме обслуживания, и группа рекомендует переход на классы java.time.
LocalDate
Код в java.time похож на код Joda-Time с классом LocalDate
. Класс LocalDate
представляет значение только для даты без времени суток и без часового пояса.
Часовой пояс имеет решающее значение при определении даты. В любой момент времени дата меняется по всему земному шару в зависимости от зоны. Например, через несколько минут после полуночи в Париж Франция - это новый день, но все еще "вчера" в Монреаль Квебек .
ZoneId z = ZoneId.of( “America/Montreal” );
LocalDate today = LocalDate.now( z );
Вы можете опрашивать каждую часть, номер года, месяц и т. Д. Обратите внимание, что месяцы считаются правильными, 1–12 для января-декабря (в отличие от предыдущих классов).
int year = today.getYear();
int monthNumber = today.getMonthValue(); // 1-12 for January-December.
int dayOfMonth = today.getDayOfMonth();
Вы можете собрать LocalDate
объект из этих частей.
LocalDate ld = LocalDate.of( year , monthNumber , dayOfMonth );
YearMonth
Чтобы узнать продолжительность месяца , используйте класс YearMonth
.
YearMonth ym = YearMonth.from( ld );
int lengthOfMonth = ym.lengthOfMonth();
О java.time
Инфраструктура java.time встроена в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые классы даты и времени, такие как java.util.Date
, .Calendar
и & java.text.SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java.time.
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений.
Большая часть функциональности java.time перенесена в Java 6 & 7 в ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP (см. Как использовать… ).
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .