Sí, aunque no es tan bonito como podría ser:
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));
}
}
}
Nota que he programado en forma fija el supuesto de que hay 12 meses, y que estamos interesados en 2010. Sin embargo, explícitamente seleccioné la cronología gregoriana; en otras cronologías obtendría respuestas diferentes, por supuesto. (Y el ciclo "12 meses" no sería una suposición válida, ya sea ...)
He pasado por un LocalDate
en lugar de un DateTime
con el fin de buscar el valor, para enfatizar (sin embargo débilmente :) que el valor no depende de la zona horaria.
Esto todavía no es tan simple como parece, te importa. No sé de improviso qué sucede si utilizo una cronología para construir el LocalDate
, pero solicito el valor máximo de un campo en una cronología diferente. Tengo algunas ideas sobre lo que sucede fuerza, sabiendo que una cierta cantidad de tiempo sobre Joda, pero no es probablemente una buena idea :)
Hmmm ... anagramatically, o programáticamente? – Lambart