【问题标题】:Get the list of dates between two dates [closed]获取两个日期之间的日期列表 [关闭]
【发布时间】:2013-05-28 06:56:43
【问题描述】:

我正在使用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/

【问题讨论】:

标签: java date jcalendar


【解决方案1】:

您应该尝试使用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());
}

2018java.time更新

时间在进步,事情在改善。 Java 8 引入了新的java.time API,它取代了“日期”类,并且应该优先使用

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);
}

【讨论】:

  • 这行得通!谢谢队友:)
  • 这是一个不错的改变 ;)
  • 咳嗽 Joda Time 咳嗽
  • @MoritzPetersen 同意,我认为这可能有点过头了,因为我们实际上是在计算差异,只是列出日期。
  • 我可以像这样更改日期格式吗? MM-dd-yyyy?
猜你喜欢
  • 2010-10-05
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
相关资源
最近更新 更多