Haha, c'est encore un problème de date, alors je vous recommande vivement d'utiliser la nouvelle API time de Java 8, et votre chaîne d'heure est toujours dans ce format yyyy-MM-dd, vous pouvez convertir la chaîne en LocalDate directement en utilisant le LocalDate.parse méthode Cible
De plus, si cela implique une série de collections temporelles régulières, vous devez alors envisager Stream. Il est très pratique et rapide d'utiliser Stream pour construire votre collection.
SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj");
try {
Date begin = sdf.parse("2016-12-11");
Date end = sdf.parse("2016-12-20");
List<String> l = new ArrayList<String>();
Calendar cal = Calendar.getInstance();
while (begin.before(end)) {
l.add(sdf.format(begin));
cal.setTime(begin);
cal.add(Calendar.DAY_OF_MONTH, 1);
begin = cal.getTime();
}
for(String s:l){
System.out.println(s);
}
} catch (ParseException e) {
e.printStackTrace();
}
Vous avez besoin du package lang d'Apache, qui possède l'API suivante
static Date addDays(Date date, int montant) Renvoie un nouvel objet Date après avoir ajouté le montant jours à un objet date time static Date addHours(Date date, int montant) Renvoie un nouvel objet Date time après avoir ajouté le montant h Objet Date static Date addMilliseconds(Date date, int montant) Renvoie un objet date/heure après avoir ajouté un montant en millisecondes au nouvel objet Date static Date addMinutes(Date date, int montant) Renvoie un objet date/heure ajoutant un montant Nouveau Objet Date après minutes static Date addMonths(Date date, int montant) Renvoie un objet date time Ajouter montant Nouvel objet Date après mois static Date addSeconds(Date date, int montant) Renvoie une date Un nouvel objet Date après ajout d'un nombre de secondes à l'objet temps static Date addWeeks(Date date, int montant) Renvoie un nouvel objet Date après avoir ajouté un nombre de semaines à l'objet date time static Date addYears(Date date, int montant) ) Renvoie un objet date heure et un nouvel objet Date après avoir ajouté le montant des années
Haha, c'est encore un problème de date, alors je vous recommande vivement d'utiliser la nouvelle API time de Java 8, et votre chaîne d'heure est toujours dans ce format
yyyy-MM-dd
, vous pouvez convertir la chaîne en LocalDate directement en utilisant leLocalDate.parse
méthode CibleDe plus, si cela implique une série de collections temporelles régulières, vous devez alors envisager Stream. Il est très pratique et rapide d'utiliser Stream pour construire votre collection.
Puis le code du test :
Voici le résultat de l'impression :
Facile à utiliser~~Parfaitement élégant et facile à comprendre Java8~Haha
Vous calculez le nombre de jours entre deux dates et ajoutez 1 en boucle Si la date ajoutée est égale à la date ultérieure, tout ira bien
SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj");
Vous avez besoin du package lang d'Apache, qui possède l'API suivante
static Date addDays(Date date, int montant) Renvoie un nouvel objet Date après avoir ajouté le montant jours à un objet date time
static Date addHours(Date date, int montant) Renvoie un nouvel objet Date time après avoir ajouté le montant h Objet Date
static Date addMilliseconds(Date date, int montant) Renvoie un objet date/heure après avoir ajouté un montant en millisecondes au nouvel objet Date
static Date addMinutes(Date date, int montant) Renvoie un objet date/heure ajoutant un montant Nouveau Objet Date après minutes
static Date addMonths(Date date, int montant) Renvoie un objet date time Ajouter montant Nouvel objet Date après mois
static Date addSeconds(Date date, int montant) Renvoie une date Un nouvel objet Date après ajout d'un nombre de secondes à l'objet temps
static Date addWeeks(Date date, int montant) Renvoie un nouvel objet Date après avoir ajouté un nombre de semaines à l'objet date time
static Date addYears(Date date, int montant) ) Renvoie un objet date heure et un nouvel objet Date après avoir ajouté le montant des années
Adresse de l'article