java8 - Encuentre la siguiente ocurrencia de un día de la semana en JSR-310
jackson jsr310 (1)
La respuesta depende de tu definición de "próximo miércoles" ;-)
JSR-310 proporciona dos opciones usando la clase TemporalAdjusters .
La primera opción es next () :
LocalDate input = LocalDate.now();
LocalDate nextWed = input.with(TemporalAdjusters.next(DayOfWeek.WEDNESDAY));
La segunda opción es nextOrSame () :
LocalDate input = LocalDate.now();
LocalDate nextWed = input.with(TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY));
Los dos difieren dependiendo de qué día de la semana sea la fecha de entrada.
Si la fecha de entrada es 2014-01-22 (un miércoles), entonces:
-
next()
volverá 2014-01-29, una semana después -
nextOrSame()
devolverá 2014-01-22, lo mismo que la entrada
Si la fecha de entrada es 2014-01-20 (un lunes), entonces:
-
next()
volverá 2014-01-22 -
nextOrSame()
volverá 2014-01-22
es decir. next()
siempre devuelve una fecha posterior, mientras que nextOrSame()
devolverá la fecha de entrada si coincide.
Tenga en cuenta que ambas opciones se ven mucho mejor con las importaciones estáticas:
LocalDate nextWed1 = input.with(next(WEDNESDAY));
LocalDate nextWed2 = input.with(nextOrSame(WEDNESDAY));
TemporalAdjusters
también incluye los métodos previous()
y previousOrSame()
.
Dado un objeto JSR-310, como LocalDate
, ¿cómo puedo encontrar la fecha del próximo miércoles (o cualquier otro día de la semana?
LocalDate today = LocalDate.now();
LocalDate nextWed = ???