ТЛ; др
LocalDate.now( ZoneId.of( “America/Montreal” ) ).getDayOfYear()
Терминология «юлианский день»
Термин «юлианский день» иногда используется свободно для обозначения порядкового дня года или Порядкового числа , означающего число от 1 до 365 или 366 ( високосные годы ). 1 января - 1
, 2 января - 2
, 31 декабря - 365
(или 366
в високосные годы).
Такое свободное (неправильное) использование Julian
, вероятно, происходит от использования в астрономии и других областях дат отслеживания в виде непрерывного подсчета дней с полудня по всемирному времени 1 января 4713 г. до н. Юлианский календарь ). В настоящее время юлианская дата приближается к двум с половиной миллионам, 2,457,576
сегодня.
java.time
Инфраструктура java.time, встроенная в Java 8 и более поздние версии, позволяет легко узнать день года.
Класс LocalDate
представляет значение только для даты без времени суток и без часового пояса. Вы можете допросить за день года.
LocalDate localDate = LocalDate.of ( 2010 , Month.JUNE , 8 );
int dayOfYear = localDate.getDayOfYear ();
Дамп на консоль. Результаты показывают, что 8 июня 2010 года действительно день № 159.
System.out.println ( "localDate: " + localDate + " | dayOfYear: " + dayOfYear );
localDate: 2010-06-08 | dayOfYear: 159
Часовой пояс имеет решающее значение при определении даты. В любой момент времени дата меняется по всему земному шару в зависимости от зоны. Например, через несколько минут после полуночи в Париже Франция - новый день, а в Монреале-Квебеке все еще «вчера».
ZoneId z = ZoneId.of( “America/Montreal” );
LocalDate today = LocalDate.now( z );
int dayOfYear = today.getDayOfYear ();
Переход в другом направлении, от числа к дате.
LocalDate ld = Year.of( 2017 ).atDay( 159 ) ;
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют старые классные устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует выполнить переход на классы java.time .
Чтобы узнать больше, см. Учебное пособие по Oracle . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и more .