Necesito obtener la primera fecha (como org.joda.time.LocalDate) de un mes y la última. Obtener el primero es trivial, pero obtener el último parece necesitar algo de lógica, ya que los meses tienen una duración diferente y la duración de febrero incluso varía con los años. ¿Hay un mecanismo para esto ya integrado en JodaTime o debería implementarlo yo mismo?
110

DateTimeRespuestas:
Qué tal si:
dayOfMonth()devuelve unLocalDate.Propertyque representa el campo "día del mes" de una manera que conoce el origenLocalDate.Da la casualidad que el
withMaximumValue()método incluso está documentado para recomendarlo para esta tarea en particular:fuente
dt.with(TemporalAdjusters.lastDayOfMonth())Otro método simple es este:
fuente
Una vieja pregunta, pero un resultado superior en Google cuando estaba buscando esto.
Si alguien necesita el último día real como un
intuso de JodaTime, puede hacer esto:fuente
Usando JodaTime, podemos hacer esto:
Entero final estático público CURRENT_YEAR = DateTime.now (). getYear (); Entero final estático público CURRENT_MONTH = DateTime.now (). getMonthOfYear (); Entero final estático público LAST_DAY_OF_CURRENT_MONTH = DateTime.now () .dayOfMonth (). getMaximumValue (); Entero final estático público LAST_HOUR_OF_CURRENT_DAY = DateTime.now () .hourOfDay (). getMaximumValue (); Entero final estático público LAST_MINUTE_OF_CURRENT_HOUR = DateTime.now (). minuteOfHour (). getMaximumValue (); Entero final estático público LAST_SECOND_OF_CURRENT_MINUTE = DateTime.now (). secondOfMinute (). getMaximumValue (); public static DateTime getLastDateOfMonth () { devolver nuevo DateTime (CURRENT_YEAR, CURRENT_MONTH, LAST_DAY_OF_CURRENT_MONTH, LAST_HOUR_OF_CURRENT_DAY, LAST_MINUTE_OF_CURRENT_HOUR, LAST_SECOND_OF_CURRENT_MINUTE); }Como se describe aquí en mi pequeña esencia sobre github: una clase de JodaTime y java.util.Date Util con muchas funciones útiles.
fuente