java 已知两个日期,遍历出两个日期之间所有的日期,重点是::包括第一个日期!!
迷茫
迷茫 2017-04-18 10:30:22
0
5
705

String timeStart = "2016-12-11";
String timeEnd = "2016-12-20";

已知两个日期,怎么循环出 [timeStart - timeEnd] 的所有日期,包括开始和结束时间。
并存入一个List<String>的集合中

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(5)
PHPzhong

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.

   /**
     * 收集起始时间到结束时间之间所有的时间并以字符串集合方式返回
     * @param timeStart
     * @param timeEnd
     * @return
     */
    public static List<String> collectLocalDates(String timeStart, String timeEnd){
        return collectLocalDates(LocalDate.parse(timeStart), LocalDate.parse(timeEnd));
    }

    /**
     * 收集起始时间到结束时间之间所有的时间并以字符串集合方式返回
     * @param start
     * @param end
     * @return
     */
    public static List<String> collectLocalDates(LocalDate start, LocalDate end){
        // 用起始时间作为流的源头,按照每次加一天的方式创建一个无限流
        return Stream.iterate(start, localDate -> localDate.plusDays(1))
                     // 截断无限流,长度为起始时间和结束时间的差+1个
                     .limit(ChronoUnit.DAYS.between(start, end) + 1)
                     // 由于最后要的是字符串,所以map转换一下
                     .map(LocalDate::toString)
                     // 把流收集为List
                     .collect(Collectors.toList());
    }

Puis le code du test :

        String timeStart = "2016-12-11";
        String timeEnd = "2016-12-20";

        collectLocalDates(timeStart, timeEnd).forEach(System.out::println);

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

洪涛
 思路就是这样:
 public static List<Integer> getYear(int startYear,int endYear) {
        List<Integer> years = new ArrayList<Integer>();
        while (startYear <= endYear) {
            years.add(startYear);
            startYear++;
        }
        return years;
    }
Ty80

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

Adresse de l'article

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal