En mi script, necesito realizar un conjunto de acciones a través del rango de fechas, dada una fecha de inicio y finalización.
Por favor, deme orientación para lograr esto usando Java.
for ( currentDate = starDate; currentDate < endDate; currentDate++) {
}
Sé que el código anterior es simplemente imposible, pero lo hago para mostrarle lo que me gustaría lograr.
Respuestas:
Bueno, podría hacer algo como esto usando la API de tiempo de Java 8 , específicamente para este problema
java.time.LocalDate
(o las clases equivalentes de Joda Time para Java 7 y anteriores)Me minuciosamente recomendar el uso
java.time
(o tiempo Joda) durante los incorporadosDate
/Calendar
clases.fuente
import
declaraciones.JodaTime es bueno, sin embargo, en aras de la integridad y / o si prefiere las instalaciones proporcionadas por API, estos son los enfoques estándar de API.
Al comenzar con
java.util.Date
instancias como a continuación:Aquí está el
java.util.Calendar
enfoque heredado en caso de que aún no esté en Java8:Y aquí está el
java.time.LocalDate
enfoque de Java8 , básicamente exactamente el enfoque de JodaTime:Si desea iterar incluyendo la fecha de finalización, use
!start.after(end)
y!date.isAfter(end)
respectivamente.fuente
Estilo Java 8 , utilizando las clases java.time :
Salida:
Alternativa:
Java 9 agregó el método dateUntil () :
fuente
Esta es esencialmente la misma respuesta que BalusC dio, pero un poco más legible con un ciclo while en lugar de un ciclo for:
fuente
Apache Commons
fuente
addDays(..)
y se vuelve aún más corta.fuente
fuente
Podemos migrar la lógica a varios métodos para Java 7, Java 8 y Java 9 :
Entonces podemos invocar estos métodos como:
El resultado sería:
fuente
Date
y lasCalendar
clases fueron suplantadas por las clases java.time hace años. Específicamente, reemplazado porInstant
yZonedDateDate
.Aquí está el código Java 8. Creo que este código resolverá tu problema. Codificación feliz
fuente
¿Por qué no usar epoch y recorrer fácilmente?
fuente
Puede escribir una clase como esta (implementando la interfaz del iterador) e iterar sobre ella.
y úsalo como:
fuente
Puedes probar esto:
fuente
Esto lo ayudará a comenzar 30 días atrás y recorrer hasta la fecha de hoy. puede cambiar fácilmente el rango de fechas y dirección.
fuente