online joda examples dates java scala jodatime

java - examples - jodatime difference between dates



¿Cómo obtener la última fecha de un mes en particular con JodaTime? (4)

Otro método simple es este:

//Set the Date in First of the next Month: answer = new DateTime(year,month+1,1,0,0,0); //Now take away one day and now you have the last day in the month correctly answer = answer.minusDays(1);

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 diferente duración y la duración de febrero incluso varía con los años. ¿Existe un mecanismo para esto ya incorporado a JodaTime o debería implementarlo yo mismo?


Qué tal si:

LocalDate endOfMonth = date.dayOfMonth().withMaximumValue();

dayOfMonth() devuelve una LocalDate.Property que representa el campo "día del mes" de una manera que conoce el LocalDate origen.

withMaximumValue() la withMaximumValue() método withMaximumValue() incluso está documented para recomendarlo para esta tarea en particular:

Esta operación es útil para obtener un LocalDate el último día del mes, ya que la duración del mes varía.

LocalDate lastDayOfMonth = dt.dayOfMonth().withMaximumValue();


Una vieja pregunta, pero un resultado superior de google cuando estaba buscando esto.

Si alguien necesita el último día como int lugar de usar JodaTime, puede hacer esto:

public static final int JANUARY = 1; public static final int DECEMBER = 12; public static final int FIRST_OF_THE_MONTH = 1; public final int getLastDayOfMonth(final int month, final int year) { int lastDay = 0; if ((month >= JANUARY) && (month <= DECEMBER)) { LocalDate aDate = new LocalDate(year, month, FIRST_OF_THE_MONTH); lastDay = aDate.dayOfMonth().getMaximumValue(); } return lastDay; }


Usando JodaTime, podemos hacer esto:

public static final Integer CURRENT_YEAR = DateTime.now().getYear(); public static final Integer CURRENT_MONTH = DateTime.now().getMonthOfYear(); public static final Integer LAST_DAY_OF_CURRENT_MONTH = DateTime.now() .dayOfMonth().getMaximumValue(); public static final Integer LAST_HOUR_OF_CURRENT_DAY = DateTime.now() .hourOfDay().getMaximumValue(); public static final Integer LAST_MINUTE_OF_CURRENT_HOUR = DateTime.now().minuteOfHour().getMaximumValue(); public static final Integer LAST_SECOND_OF_CURRENT_MINUTE = DateTime.now().secondOfMinute().getMaximumValue(); public static DateTime getLastDateOfMonth() { return new 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 describo aquí en mi pequeña esencia en github: A JodaTime y java.util.Date Util Class con muchas funciones útiles.