Tengo un LocalDate que debe obtener el primer y último día del mes. ¿Cómo puedo hacer eso?
p.ej. 13/2/2014
Necesito obtener 1/2/2014
y 28/2/2014
en formatos LocalDate .
Usando la clase Threeten LocalDate.
Solo usa withDayOfMonth
y lengthOfMonth()
:
LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);
LocalDate end = initial.withDayOfMonth(initial.lengthOfMonth());
La API se diseñó para admitir una solución que se ajusta a los requisitos comerciales.
Sin embargo, las soluciones de Jon también están bien.
fuente
YearMonth
Para completar, y más elegante en mi opinión, vea este uso de
YearMonth
clase.Para el primer y último día del mes actual, esto se convierte en:
fuente
LocalDate
with
método?LocalDate
instancia para comenzar.La respuesta de Jon Skeets es correcta y ha merecido mi voto a favor, simplemente agregando esta solución ligeramente diferente para completar:
fuente
Si alguien viene buscando el primer día del mes anterior y el último día del mes anterior :
fuente
fuente
Puede intentar esto para evitar indicar una fecha personalizada y si es necesario mostrar las fechas de inicio y finalización del mes actual:
Resultado:
fuente
Prueba esto:
puede encontrar la salida deseada pero debe cuidar el parámetro true / false para el método getLastDayOfMonth
ese parámetro denota año bisiesto
fuente
getLastDayOfMonth
; vea mi respuesta para un enfoque más simple.si desea hacerlo solo con la clase LocalDate:
fuente
Solo aquí para mostrar mi implementación para la solución @herman
fuente
LocalDateTime
es exactamente la clase incorrecta para usar aquí. Está descartando información valiosa de zona / compensación.Date
no tiene nada que ver con la Pregunta y, en general, debería evitarse.ZoneId.of("America/La_Paz")
. Para las fechas actuales dará el mismo resultado, pero tal vez no para fechas históricas o fechas en un futuro posterior.