2012-02-14 23 views

Trả lời

8

Nếu bạn muốn con số thực tế của ngày trong một năm nhất định:

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

Tất nhiên, đây trả về 365 hoặc 366 ... bình thường:.

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

Điều này cũng sẽ hoạt động: '(mới LocalDate (năm, 12, 31)). GetDayOfYear();' – jpstrube

12

Câu trả lời bạn muốn không phải là rõ ràng 365. Đó là 365 hoặc 366, bạn không tính đến năm nhuận trong ví dụ của mình.

Phát hiện năm nhuận và chỉ viết mã cứng bằng tuyên bố ba năm sẽ không thể chấp nhận vì một lý do nào đó?

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

Tất nhiên điều này sẽ cung cấp cho bạn số ngày trong năm hiện tại, cách nhận số ngày trong một năm khác là tầm thường và tập thể dục cho người đọc.

2

DateTime mới() năm() .toInterval(). toDuration(). getStandardDays();

3

tl; dr

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

Sử dụng java.time

Dự án Joda-Time, bây giờ trong maintenance mode, khuyên chuyển đổi sang các java.time lớp.

Lớp java.time.Year có thể đại diện cho bất kỳ năm cụ thể nào.

Year year = Year.of(2017); 

Bạn có thể thẩm vấn để biết thông tin về năm đó như chiều dài của nó trong số ngày hoặc cho dù đó là một Leap Year hay không.

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

Về java.time

Khung java.time được xây dựng vào Java 8 và sau đó. Các lớp này thay thế các lớp học ngày giờ legacy phiền hà cũ như java.util.Date, Calendar, & SimpleDateFormat.

Dự án Joda-Time, hiện đang ở maintenance mode, khuyên di chuyển đến các lớp java.time.

Để tìm hiểu thêm, hãy xem Oracle Tutorial. Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích. Đặc điểm kỹ thuật là JSR 310.

Nơi lấy các lớp java.time?

Dự án mở rộng ThreeTen-Extra java.time với các lớp bổ sung. Dự án này là một nền tảng chứng minh cho những bổ sung có thể có trong tương lai vào java.time. Bạn có thể tìm thấy một số lớp học hữu ích tại đây như Interval, YearWeek, YearQuartermore.

Các vấn đề liên quan