0

これは、2 つの日付の間に印刷するコードであり、土曜日と日曜日を除外していますが、これは特定の月の最後の日付を印刷しません。

import org.joda.time.DateTimeConstants;
import org.joda.time.LocalDate;

public class DatesexcludingWeekend {
    public static void main(String[] args) {
        final LocalDate start = new LocalDate(2012, 05, 1);
        final LocalDate end = new LocalDate(2012, 05, 31);
        LocalDate weekday = start;
        if (start.getDayOfWeek() == DateTimeConstants.SATURDAY|| start.getDayOfWeek() == DateTimeConstants.SUNDAY) {
            weekday = weekday.plusWeeks(1).withDayOfWeek(DateTimeConstants.MONDAY);
        }

        while (weekday.isBefore(end)) {
            String dateValues[] = weekday.toString().split("-");
            //System.out.println(dateValues[2]+"/"+dateValues[1]+"/"+dateValues[0]);
            String date=dateValues[2]+"/"+dateValues[1]+"/"+dateValues[0];
            System.out.println("date : "+date);
            if (weekday.getDayOfWeek() == DateTimeConstants.FRIDAY)
                weekday = weekday.plusDays(3);
            else
                weekday = weekday.plusDays(1);
        }
    }
}

上記のコードの出力は次のとおりです。

date : 01/05/2012
date : 02/05/2012
date : 03/05/2012
date : 04/05/2012
date : 07/05/2012
date : 08/05/2012
date : 09/05/2012
date : 10/05/2012
date : 11/05/2012
date : 14/05/2012
date : 15/05/2012
date : 16/05/2012
date : 17/05/2012
date : 18/05/2012
date : 21/05/2012
date : 22/05/2012
date : 23/05/2012
date : 24/05/2012
date : 25/05/2012
date : 28/05/2012
date : 29/05/2012
date : 30/05/2012

31-05/2012これが印刷されていない場合

これを解決するのを手伝ってください。

よろしくトニー

4

4 に答える 4

2

それはあなたがこう言うからです:

while (weekday.isBefore(end)) 

最終日を含める場合は、次の 2 つの選択肢があります。

  1. 終了日を目標日の1日後に設定(while条件はそのまま)

  2. 条件を変更しwhileます。

代わりの while 条件は次のようになります。

while (weekday.isBefore(end) || weekday.equals(end)) 
于 2012-06-19T12:02:25.443 に答える
2

問題は while ループにあると思います:

weekday.isBefore(end)

31/05/2012は単に前ではありませんend- それらは同じ日付です

javadocを参照してください

于 2012-06-19T12:03:33.340 に答える
2

使ったことあるから疑わしい

while (weekday.isBefore(end))

また、2012 年 5 月 31 日は 2012 年 5 月 31 日より前ではありません。

于 2012-06-19T12:03:58.423 に答える
2

その日2012, 05, 31は前ではありません2012, 05, 31

に変更weekday.isBefore(end)してみてください!end.isBefore(weekday)

于 2012-06-19T12:05:14.413 に答える