2012-02-14 17 views

Odpowiedz

8

Jeśli chcesz rzeczywistej liczby dni w danym roku:

int year = 2012; 
LocalDate ld = new LocalDate(year,1,1); 
System.out.println(Days.daysBetween(ld,ld.plusYears(1)).getDays()); 

oczywiście, to zwraca 365 lub 366 ... normalnie.

int year = 1582; 
LocalDate ld = new LocalDate(year,1,1,GJChronology.getInstance()); 
System.out.println(Days.daysBetween(ld,ld.plusYears(1)).getDays()); 
// year 1582 had 355 days 
+0

Powinno to również działać: '(nowa lokalna data (rok, 12, 31)). GetDayOfYear();' – jpstrube

12

Odpowiedź chcesz nie jest oczywiście 365. Jest to 365 lub 366, nie bierzesz pod uwagę lat przestępnych w swoim przykładzie.

Wykrywanie roku przestępnego i po prostu ciężkie kodowanie go potrójnym stwierdzeniem byłoby z jakiegoś powodu nie do przyjęcia?

final DateTime dt = new DateTime(); 
final int daysInYear = dt.year().isLeap() ? 366 : 365; 

Oczywiście byłoby to daje liczbę dni w roku bieżącym, jak uzyskać liczbę dni, w innym roku jest trywialne i ćwiczenie dla czytelnika.

2

nowy DateTime() roku() .toInterval(). toDuration(). getStandardDays();

3

tl; dr

java.time.Year.of(2017).length() 

Korzystanie java.time

Projekt Joda-Time, teraz w maintenance mode, doradza migrację do java.time klas.

Klasa java.time.Year może reprezentować dowolny konkretny rok.

Year year = Year.of(2017); 

można przesłuchać informacje na temat tego roku, takie jak jego długości w liczbie dni, czy to Leap Year czy nie.

int countDaysInYear = year.length() ; 
boolean isLeapYear = year.isLeap() ; // ISO proleptic calendar system rules. 

O java.time

Ramy java.time jest wbudowana w Java 8 i późniejszych. Klasy te zastępują kłopotliwe stare klasy z datami, takie jak java.util.Date, Calendar, & SimpleDateFormat.

Projekt Joda-Time, teraz w maintenance mode, zaleca migrację do klas java.time. Aby uzyskać więcej informacji, zobacz

. I wyszukaj Stack Overflow dla wielu przykładów i objaśnień. Specyfikacja to JSR 310.

Gdzie można uzyskać lekcje java.time?

Projekt ThreeTen-Extra rozciąga java.time z dodatkowych zajęć. Ten projekt jest poligonem wskazującym na możliwe przyszłe dodatki do java.time. Możesz znaleźć tutaj kilka użytecznych klas, takich jak Interval, YearWeek, YearQuarter i more.

Powiązane problemy