每日一练:对给定的两个日期之间的日期进行遍历
题目
对给定的两个日期之间的日期进行遍历,比如startTime是2014-07-11;endTime是2014-08-11 如何把他们之间的日期获取并遍历出来。
思路与分析
不难看出,选项的4段实现代码中,除了日期这个判断条件不同外,主体实现是一样的。
因startDate须在endDate之前,且两日期不能相等,故选A。
!startDate.before(endDate)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class SplitTime {
private static List<Date> dateSplit(Date startDate, Date endDate) throws Exception {
if (!startDate.before(endDate)) throw new Exception("开始时间应在结束时间之后");
Long spi = endDate.getTime() - startDate.getTime();
Long step = spi / (24 * 60 * 60 * 1000);
List<Date> dateList = new ArrayList<Date>();
dateList.add(endDate);
for (int i = 1; i <= step; i++) {
dateList.add(new Date(dateList.get(i - 1).getTime() - (24 * 60 * 60 * 1000)));
}
return dateList;
}
public static void main(String[] args) throws ParseException {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date start = sdf.parse("2014-7-11");
Date end = sdf.parse("2014-8-11");
List<Date> lists = dateSplit(start, end);
if (!lists.isEmpty()) {
for (Date date : lists) {
System.out.println(sdf.format(date));
}
}
} catch (Exception e) {
}
}
}
本题考察的是对Date API before函数的使用。
[2023年07月05日22时37分28秒_]在此记录与总结。
================