在 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);
我正在研究一种可以像这样添加日期的方法:
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);