2013-09-24 2 views
-1

Скажите, что у вас есть объект Date с день/месяц и год.Как получить номер года в Java для определенного объекта даты?

Я хочу знать, какая именно дата.

Под этим я имею в виду, например, 5 марта, например, 65-й год. Или, как 15 января, является 15-м.

Не беспокойтесь, пожалуйста, время в джоду. (Не используется в текущем проекте.)

ответ

3
Calendar#get(Calendar.DAY_OF_YEAR); 
+1

Использование синтаксиса java-doc сбивает с толку для разработчиков, отличных от java –

+1

@StanislavLevental Вы правы, но здесь точка (.) Вводит в заблуждение, так как 'get' не является статическим, а методом экземпляра. – isnot2bad

+1

@StanislavLevental, об этом спросили о Java. Вероятно, большинство людей, читающих это, будут разработчиками Java. –

6

Вы можете использовать Calendar, который Java предоставляет. Используя метод get() и DAY_OF_YEAR, вы можете получить то, что хотите.

Ex: -

Calendar cal = new GregorianCalendar(); 
cal.setTime(new Date()); // Give your own date 
System.out.println(cal.get(Calendar.DAY_OF_YEAR)); 
2

Т.Л., д-р

LocalDate.now(ZoneId.of("America/Montreal")) // Today's date in a particular time zone. 
     .getDayOfYear()       // Returns day-of-year (1-366). 

Подробности

Другие ответы с Calendar класса устарели. Нерешенные старые классы времени, такие как java.util.Date, java.util.Calendar и java.text.SimpleTextFormat, теперь legacy, вытесненные классами java.time.

Использование java.time

LocalDate класс представляет собой дату только значение без времени суток и без временной зоны.

Часовой пояс имеет решающее значение для определения даты. В любой данный момент дата изменяется по всему миру по зонам. Например, через несколько минут после полуночи в Paris France - это новый день, пока еще «вчера» в Montréal Québec.

Указать proper time zone name в формате continent/region, такие как America/Montreal, Africa/Casablanca или Pacific/Auckland. Никогда не используйте аббревиатуру 3-4 буквы, такую ​​как EST или IST, так как они не настоящие часовые пояса, не стандартизированные, и даже не уникальные (!).

ZoneId z = ZoneId.of("America/Montreal"); 
LocalDate today = LocalDate.now(z); 

2017-01-23

Мы можем спросить, что день-год, то есть, 1-366.

int dayOfYear = today.getDayOfYear() ; 

Мы можем настроить что LocalDate в определенный день в год.

LocalDate ld = today.withDayOfYear(187) ; 

2017-07-06

Смотрите эту code run live at IdeOne.com.


О java.time

java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытесняют неприятные старые legacy классы времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

Проект Joda-Time, в настоящее время в maintenance mode, советует перейти на классы java.time.

Чтобы узнать больше, см. Oracle Tutorial. И поиск Stack Overflow для многих примеров и объяснений. Спецификация: JSR 310.

Где получить классы java.time?

  • Java SE 8, Java SE 9, а затем
    • Встроенный.
    • Часть стандартного Java API с объединенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7
    • Большая часть функциональности java.time будет обратно портирован на Java 6 & 7 в ThreeTen-Backport.
  • Android

ThreeTen-Extra Проект расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval, YearWeek, YearQuarter и more.

Смежные вопросы