Java 8でLocalDate.now()に基づいて週の初めの日の日付を取得する
2023-11-20 08:15:51
質問
LocalDate.now()に基づいて週の初めの日の日付を取得したいです。以下はJodaTimeで可能でしたが、Java 8の新しいDate APIから削除されたようです。
LocalDate now = LocalDate.now();
System.out.println(now.withDayOfWeek(DateTimeConstants.MONDAY));
withDayOfWeek()'が存在しないため、呼び出すことができません。
そこで質問なのですが。 どのようにいくつかのLocalDateに基づいて週の最初の日の日付を取得するには?
どのように解決するには?
なお、この式は
System.out.println(now.with(DayOfWeek.MONDAY))
は ISO-8601 を使用しているためロケールに依存せず、常に先週の月曜日にジャンプします (あるいは、日付が既に月曜日を指している場合はそのままです)。
そのため、米国やその他の国々では、週が日曜日から始まるため、期待通りに動作しないかもしれません。
now.with(DayOfWeek.MONDAY)
は前方にジャンプしません。
にジャンプしません。
これらの懸念に対処する必要がある場合、ローカライズされたフィールドである ウィークフィールド.dayOfWeek() :
LocalDate now = LocalDate.now();
TemporalField fieldISO = WeekFields.of(Locale.FRANCE).dayOfWeek();
System.out.println(now.with(fieldISO, 1)); // 2015-02-09 (Monday)
TemporalField fieldUS = WeekFields.of(Locale.US).dayOfWeek();
System.out.println(now.with(fieldUS, 1)); // 2015-02-08 (Sunday)
以下のコメントによる別の例です。
LocalDate ld = LocalDate.of(2017, 8, 18); // Friday as original date
System.out.println(
ld.with(DayOfWeek.SUNDAY)); // 2017-08-20 (2 days later according to ISO)
// Now let's again set the date to Sunday, but this time in a localized way...
// the method dayOfWeek() uses localized numbering (Sunday = 1 in US and = 7 in France)
System.out.println(ld.with(WeekFields.of(Locale.US).dayOfWeek(), 1L)); // 2017-08-13
System.out.println(ld.with(WeekFields.of(Locale.FRANCE).dayOfWeek(), 7L)); // 2017-08-20
アメリカの例では、アメリカでは日曜日が週の初めの日と考えられているので、アメリカに住んでいる人は次の日曜日ではなく最後の日曜日に行くことを期待していることがよくわかります。ISOベースのシンプルな表現
with(DayOfWeek.SUNDAY)
はこのローカライゼーションの問題を無視します。
関連
-
スレッド "main "での例外 java.util.NoSuchElementException in Java 問題解決済み
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
-
[解決済み] Javaでファイルが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Javaでリストを反復処理する方法
-
[解決済み] Java 8 で java.util.stream.Stream からリストを取得する
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド
-
[解決済み】Java 8で2つのDateの間の日数を計算する
-
[解決済み】Javaで時間のないDateを取得する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
executeQuery()でデータ操作文が発行できない。解決方法
-
Uncaught ReferenceError: は定義されていません。
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
無効なメソッド宣言
-
セミコロン期待値エラー解決
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
eclipse にリソースリーク:'in' が閉じない
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
[解決済み] 現在の週と月の初日を取得するにはどうすればよいですか?