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

时间:2015-06-12 09:37:23

标签: java calendar

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

Found 1 items
-rw-r--r--   1 hduser supergroup        158 2015-06-12 14:13 /input/test.csv

返回包含d1和amp;之间所有日期的ArrayList。 D2。

所以,首先我需要知道这两个日期之间存在多少天(遵循此示例:https://stackoverflow.com/a/28865648/4944071

我写了这样的话:

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

但是,我很确定这根本不起作用。想象一下这些参数:

  

2012/12/21至2013/02/14

不是同一年,不是同一个月,它无法正常工作。所以,我稍微摸了一下头,决定使用变量DAY_OF_YEAR。

但是,我仍然坚持,因为我不知道如何操纵这个变量来创建正确的日期,并且有很好的月份&amp;好年头..

3 个答案:

答案 0 :(得分:2)

你可以试试这个

    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;

答案 1 :(得分:1)

使用java8 date 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或Calendar:

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

答案 2 :(得分:0)

尝试类似:

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