在 2 个给定日期之间添加日期的方法?

Method to add Dates between 2 given dates?

我正在研究一种可以像这样添加日期的方法:

public static ArrayList<Calendar> addDaysBetween(Calendar day1, Calendar day2)

其中 returns ArrayList 包含 d1 和 d2 之间的所有日期。

所以,首先我需要知道这两个日期之间有多少天(遵循这个例子:)

我写了这样的东西:

ArrayList<Calendar> fullDates = new ArrayList<Calendar>();
    if(daysBetween > 0){
        for(int day = 1; day <= daysBetween; day ++){
        Calendar aNewDay = new GregorianCalendar(day1.YEAR, day1.MONTH, day1.DAY_OF_MONTH + day);
        fullDates.add(aNewDay);
        }
     }

但是,我很确定这根本行不通。想象一下那些参数:

2012/12/21 to 2013/02/14

不同年不同月,无法正常使用。所以,我挠了挠头,决定使用变量 DAY_OF_YEAR.

但是,我仍然卡住了,因为我不知道如何操纵这个变量来创建正确的日期,月份和年份都不错..

试试这样的东西:

currentDay = day1;
while (currentDay < day2){
   addcurrentday to collection
   currentday++
}

你可以试试这个

    Calendar tmp = (Calendar) day1.clone();
    ArrayList<Calendar> fullDates = new ArrayList<Calendar>();
    while (tmp.before(day2)) {
        fullDates.add((Calendar) tmp.clone());
        tmp.add(Calendar.DAY_OF_MONTH, 1);
    }
    return fullDates;

与 java8 日期 api:

    List<LocalDate> listOfDates = new ArrayList<>();
    LocalDate endDay = LocalDate.of(2014, Month.JUNE, 20);
    LocalDate startDay = LocalDate.of(2014, Month.JUNE, 11);

    long days = ChronoUnit.DAYS.between(startDay, endDay);
    for (int i = 1; i <= days; i++) {
        listOfDates.add(startDay.plusDays(i));
    }

如果您想转换为 java.util.Date 或日历:

Date d = Date.from(startDay.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
Calendar cal = Calendar.getInstance();
cal.setTime(d);