9

Joda時間に平日を追加することはできますか?

たとえば、現在の日付が 01/03 金曜日の場合、date + 1 は 02/03 ではなく 04/03 月曜日を返す必要があります。

4

5 に答える 5

8

私の知る限り、JodaTimeでこれを自動的に行う組み込みの方法はありません。ただし、平日に到達するまでループで日付をインクリメントする独自のメソッドを作成することもできます。

正確に何が必要かによっては、これはあなたが思っているよりも(はるかに)複雑になる可能性があることに注意してください。たとえば、休日もスキップする必要がありますか?休日となる日は、お住まいの国によって異なります。また、一部の国(アラブ諸国など)では、週末は土曜日と日曜日ではなく、木曜日と金曜日になります。

于 2012-10-04T13:42:46.320 に答える
5
LocalDate newDate = new LocalDate();
int i=0;
while(i<days)//days == as many days as u want too
{
    newDate = newDate.plusDays(1);//here even sat and sun are added
    //but at the end it goes to the correct week day.
    //because i is only increased if it is week day
    if(newDate.getDayOfWeek()<=5)
    {
        i++;
    }

}
System.out.println("new date"+newDate);
于 2013-03-11T13:28:55.057 に答える
-4

クラスYearMonthDayは非推奨であり、使用しないでください。単純な DateTime に変更すると、次のように呼び出して曜日を取得できます。

dateTime.getDayOfWeek();

金曜日の場合は 5 になります。

アプローチの 1 つは、次のようなカスタムの addDays メソッドを作成することです。

addDays(DateTime dateTime, int days) {
    for(int i=0;i<days;i++){
        dateTime.plusDays(1);
        if(dateTime.getDayOfWeek()==6) dateTime.plusDays(2); // if Saturday add 2 more days    }
}
于 2012-10-04T13:54:33.147 に答える