Да, хотя это не так красиво, как могло бы быть:
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));
}
}
}
Обратите внимание, что я жестко закодировал предположение, что есть 12 месяцев, и что мы заинтересованы в 2010 году. IВы явно выбрали григорианскую хронологию, хотя - в других хронологиях вы получите разные ответы, конечно.(И цикл «12 месяцев» также не будет правильным предположением ...)
Я выбрал LocalDate
, а не DateTime
, чтобы получить значение, чтобы подчеркнуть(хотя и слегка :), что значение не зависит от часового пояса.
Это все же не так просто, как кажется, заметьте.Я не знаю, что происходит, если использовать одну хронологию для построения LocalDate
, но спрашиваю максимальное значение поля в другой хронологии.У меня есть некоторые идеи о том, что может произойти, зная определенное количество о Joda Time, но это, вероятно, не очень хорошая идея:)