ТЛ; др
Year.of( 2015 )
.length()
java.time
В Java 8 и более поздних версиях у нас есть java.time пакет . ( Учебник )
length
Класс Year
представляет значение одного года. Вы можете опросить его длину.
int daysInYear = Year.of( 2015 ).length();
isLeap
Вы также можете спросить, является ли год високосным или нет.
Boolean isLeapYear = Year.isLeap( 2015 );
В качестве примера, получить количество дней в году, используя троичный оператор Java , например:
minVal = (a
В нашем случае мы хотим количество дней в году. Это 365 для високосных лет и 366 для високосного года.
int daysInYear = ( Year.isLeap( 2015 ) ) ? 366 : 365 ;
день-год
Вы можете получить номер дня в дате. Это число варьируется от 1 до 365 или 366 в високосный год.
int dayOfYear = LocalDate.now( ZoneId.of( "America/Montreal" ).getDayOfYear() ;
Идя в другом направлении, получите дату для дня года.
Year.now( ZoneId.of( "America/Montreal" ) ).atDay( 159 ) ;
Вы можете определить прошедшие дни, сравнивая эти числа дня в году, имея дело с одним годом. Но есть более простой способ; читай дальше.
Прошедшие дни
Используйте перечисление ChronoUnit
для расчета прошедших дней.
LocalDate start = LocalDate.of( 2017 , 2 , 23 ) ;
LocalDate stop = LocalDate.of( 2017 , 3 , 11 ) ;
int daysBetween = ChronoUnit.DAYS.between( start , stop );
Автоматически обрабатывает високосный год .
О 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 .