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 日 = 終了日)

JCalendarまたはJDateChooserここからダウンロードします: http://www.toedter.com/en/jcalendar/

4

1 に答える 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. として機能する 2 つ目のカレンダーを作成し、lastDateそこから 1 日を差し引くことで、これを修正できます。

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.timeJava 8 では、「日付」クラスに取って代わり、優先的に代わりに使用する必要がある新しい 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);
}
于 2013-05-28T07:04:37.167 に答える