Tôi đã thử những điều sau đây để avail không có:Tôi có thể lấy số ngày trong một năm bằng cách sử dụng JodaTime như thế nào?
new Period(Years.ONE).getDays();
new Period(1, 0, 0, 000).getDays();
Câu trả lời tôi muốn là rõ ràng là 365.
Tôi đã thử những điều sau đây để avail không có:Tôi có thể lấy số ngày trong một năm bằng cách sử dụng JodaTime như thế nào?
new Period(Years.ONE).getDays();
new Period(1, 0, 0, 000).getDays();
Câu trả lời tôi muốn là rõ ràng là 365.
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
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.
DateTime mới() năm() .toInterval(). toDuration(). getStandardDays();
java.time.Year.of(2017).length()
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.
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
, YearQuarter
và more.
Điều này cũng sẽ hoạt động: '(mới LocalDate (năm, 12, 31)). GetDayOfYear();' – jpstrube