获取两个日期之间的日期列表

6
我正在使用 JDateChooser,并制作一个程序,用于输出所选日期之间的日期列表,例如:
date1= Jan 1, 2013  // Starting Date

date2= Jan 16,2013  // End Date

然后它会输出。
Jan 2, 2013...
Jan 3, 2013.. 
Jan 4, 2013..

一直重复这个过程,直到达到结束日期。

我已经完成了一个程序,当你在JDatechooser上点击一个日期时,它会自动输出结束日期。(所选日期+15天=结束日期)

我在这里下载了JCalendarJDateChooserhttp://www.toedter.com/en/jcalendar/


3
你有什么问题? - Moritz Petersen
1
非常好,但你忘了提问。 - Suresh Atta
哈哈哈哈,不好意思,请问如何输出起始日期和结束日期之间的日期列表 :D - Maguzu
Java中获取两个日期之间日期列表的方法重复问题 - Basil Bourque
1个回答

31
你应该尝试使用 日历(Calendar),它能让你在不同日期之间快速切换。
Date fromDate = ...;
Date toDate = ...;

System.out.println("From " + fromDate);
System.out.println("To " + toDate);

Calendar cal = Calendar.getInstance();
cal.setTime(fromDate);
while (cal.getTime().before(toDate)) {
    cal.add(Calendar.DATE, 1);
    System.out.println(cal.getTime());
}

更新

这个例子包括toDate。您可以通过创建第二个日历作为lastDate并从中减去一天来纠正这个问题...

Calendar lastDate = Calendar.getInstance();
lastDate.setTime(toDate);
lastDate.add(Calendar.DATE, -1);

Calendar cal = Calendar.getInstance();
cal.setTime(fromDate);
while (cal.before(lastDate)) {...}

这将为您提供开始日期和结束日期之间的所有日期,但不包括这两个日期。

将日期添加到ArrayList中

List<Date> dates = new ArrayList<Date>(25);
Calendar cal = Calendar.getInstance();
cal.setTime(fromDate);
while (cal.getTime().before(toDate)) {
    cal.add(Calendar.DATE, 1);
    dates.add(cal.getTime());
}

2018年Java.time更新

时间在流逝,事物在不断进步。Java 8引入了新的java.time API,取代了旧的“date”类,并且应该作为首选使用。

LocalDate fromDate = LocalDate.now();
LocalDate toDate = LocalDate.now();

List<LocalDate> dates = new ArrayList<LocalDate>(25);

LocalDate current = fromDate;
//current = current.plusDays(1); // If you don't want to include the start date
//toDate = toDate.plusDays(1); // If you want to include the end date
while (current.isBefore(toDate)) {
    dates.add(current));
    current = current.plusDays(1);
}

1
cough Joda Time cough - Moritz Petersen
我可以将日期格式更改为 MM-dd-yyyy 吗? - Maguzu
@JohnPaulMagat 是的。在 while 循环中,你可以将结果添加到 ArrayList 中,而不仅仅是将其打印到标准输出流。 - MadProgrammer
@MadProgrammer 我尝试了这个代码 while (cal2.getTime().before(newDateString)) { cal2.add(Calendar.DATE, 1); arraylist.add(cal2.getTime()); } 但是在 add 上出现了错误,为什么?还是我做错了什么? - Maguzu
@JohnPaulMagat 我添加了一个示例。我只能假设 ArrayList 要么允许 Date 对象,要么没有初始化。 - MadProgrammer
显示剩余12条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接