web-dev-qa-db-ja.com

Joda-Timeの特定の週の最初の日を取得しますか? java

Joda-Time には、週の最初の日(月曜日)の日付を取得する方法があります。

たとえば、今日の現在の日付21/01/11に基づいて今週の月曜日が何曜日だったかを知りたい

事前に乾杯。

編集:私はまた、週の終わりの日付、すなわち日曜日の日付を見つけたいです。乾杯

38
jonney

LocalDate.withDayOfWeek を試してください:

LocalDate now = new LocalDate();
System.out.println(now.withDayOfWeek(DateTimeConstants.MONDAY)); //prints 2011-01-17
System.out.println(now.withDayOfWeek(DateTimeConstants.SUNDAY)); //prints 2011-01-23
74
dogbane
LocalDate today = new LocalDate();
LocalDate weekStart = today.dayOfWeek().withMinimumValue();
LocalDate weekEnd = today.dayOfWeek().withMaximumValue();

最初と最後の日、つまり月曜日と日曜日を提供します

26
sudhir

別のオプションは roundFloorCopy を使用することです。これは次のようになります。

LocalDate startOfWeek = new LocalDate().weekOfWeekyear().roundFloorCopy();

標準週 (日曜日)の最終日には roundCeilingCopy および minusDays …を使用します

LocalDate lastDateOfWeek = new LocalDate().weekOfWeekyear().roundCeilingCopy().minusDays( 1 );

DateTimeでも機能します。そして、週の終わりに動作します(排他的)。

DateTime dateTime = new DateTime();
DateTime startOfWeek = dateTime.weekOfWeekyear().roundFloorCopy();
DateTime endOfWeek = dateTime.weekOfWeekyear().roundCeilingCopy();

コンソールにダンプ…

System.out.println( "dateTime " + dateTime );
System.out.println( "startOfWeek " + startOfWeek );
System.out.println( "endOfWeek " + endOfWeek );

実行すると…

dateTime 2014-01-24T00:00:34.955-08:00
startOfWeek 2014-01-20T00:00:00.000-08:00
endOfWeek 2014-01-27T00:00:00.000-08:00
12
SpaceTrucker

getDayOfWeek() メソッドを使用して、月曜日に1、火曜日に2、..、日曜日に7を返して、その日だけ戻って月曜日に到達することができます。

import org.joda.time.DateTime;

    public class JodaTest {

        public static void main(String[] args) {
            DateTime date = new DateTime();
            System.out.println(date);
                    //2011-01-21T15:06:18.713Z
            System.out.println(date.minusDays(date.getDayOfWeek()-1));
                    //2011-01-17T15:06:18.713Z
        }
    }
5
dimitrisli

セクションJOD-Timeユーザーガイドの "Querying DateTimes" を参照してください。

以下は、私が従う一般的なアルゴリズムです。

  1. 目標日の曜日を見つけます(あなたが言ったように2011年1月21日)
  2. 月曜日の何日前にこれがあるかを決定する
  3. dateTime.minusDays(n) を使用してターゲット日付から#2の値を減算します
4
matt b