Vâng, mặc dù nó không xinh đẹp như nó có thể là:
import org.joda.time.*;
import org.joda.time.chrono.*;
import org.joda.time.field.*;
public class Test {
public static void main(String[] args) {
GregorianChronology calendar = GregorianChronology.getInstance();
DateTimeField field = calendar.dayOfMonth();
for (int i = 1; i < 12; i++) {
LocalDate date = new LocalDate(2010, i, 1, calendar);
System.out.println(field.getMaximumValue(date));
}
}
}
Lưu ý rằng tôi đã mã hóa cứng giả định rằng có 12 tháng, và rằng chúng tôi quan tâm đến năm 2010. Tôi đã rõ ràng là đã chọn niên đại Gregorian mặc dù - trong các niên đại khác, bạn sẽ nhận được các câu trả lời khác nhau, tất nhiên. (Và vòng lặp "12 tháng" sẽ không phải là giả định hợp lệ ...)
Tôi đã đi theo số LocalDate
thay vì DateTime
để tìm giá trị, để nhấn mạnh (tuy nhiên mờ nhạt :) giá trị không phụ thuộc vào múi giờ.
Điều này vẫn không đơn giản như mong đợi. Tôi không biết điều gì sẽ xảy ra nếu sử dụng một niên đại để xây dựng các LocalDate
, nhưng yêu cầu giá trị tối đa của một trường trong một niên đại khác nhau. Tôi có một số ý tưởng về những gì sức xảy ra, biết một số tiền nhất định về Joda Thời gian, nhưng đây có thể không phải là một ý tưởng tốt :)
Nguồn
2010-09-22 19:52:31
Hmmm ... anagramatically, hoặc lập trình? – Lambart