tl;dr
LocalDate.now().getDayOfYear()
…or…
org.threeten.extra.DayOfYear.now()
Терминология «юлианского дня»
Термин «юлианский день» иногда используется в широком смысле для обозначения порядкового дня года или Порядковая дата, что означает число от 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 ) ;
org.threeten.extra.DayOfYear
Библиотека ThreeTen-Extra добавляет функциональность к java.time классы, встроенные в Java.
Эта библиотека предлагает класс для явного представления порядкового дня любого года: _ 15_. Использование этого класса вместо простого целого числа делает ваш код более самодокументированным, обеспечивает безопасность типов и гарантирует допустимые значения.
DayOfYear dayOfYear = DayOfYear.from( LocalDate.of ( 2010 , Month.JUNE , 8 ) ) ;
Получите дату на DayOfYear
с конкретным годом.
LocalDate localDate = dayOfYear.atYear( 2023 ) ;
О java.time
< em> java.time встроен в Java 8 и новее. Эти классы заменяют неудобные старые устаревшие классы даты и времени, такие как _ 19_, _ 20_, & _ 21_.
Чтобы узнать больше, см. Учебник Oracle a >. И поищите в Stack Overflow множество примеров и объяснений. Спецификация - JSR 310.
Проект Joda-Time теперь в режим обслуживания, советует перейти на java.time.
Вы можете обмениваться объектами java.time непосредственно с вашей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или новее. Нет необходимости в строках, нет необходимости в java.sql.*
классах. Hibernate 5 и JPA 2.2 поддерживают java.time.
Где взять классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. . Этот проект является испытательной площадкой для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, например _23 _, YearWeek
, _ 25_ и подробнее.
person
Basil Bourque
schedule
07.07.2016