DateTime オブジェクトの変更
CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 50/68。
DateTimeオブジェクトを取得したら、別の時点を表すように変更する必要があることがよくあります。modify()メソッドを使用すると、自然言語表現を使用してDateTimeオブジェクトから時間を加算または減算できるため、日付の計算が直感的で読みやすくなります。
modify() メソッドは、strtotime() で使用できるものと同じ形式の文字列('+1 day'、'-2 weeks'、'next Friday' など)を受け入れます。毎回新しいオブジェクトを作成するのとは異なり、このメソッドは既存の DateTime オブジェクトを直接変更するため、連続した日付操作において効率的です。
<?php
$date = new DateTime();
echo $date->format('Y-m-d'); // 今日の日付
$date->modify('+1 week');
echo $date->format('Y-m-d'); // 今日から1週間後
$date->modify('-3 days');
echo $date->format('Y-m-d'); // 今日から4日後
?>このアプローチにより、日付計算に強力な柔軟性がもたらされます。複数の修正を連結したり、'+2 months -1 day' のような複雑な式を使用したりすることで、コードの明快さと保守性を維持しながら、高度な日付演算を実行できます。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
チャレンジ
簡単2つの入力が与えられます。1つは Y-m-d H:i:s 形式の日付文字列、もう1つは変更内容を示す文字列です。最初の入力は特定の日時(例:2024-03-15 14:30:25)で、2番目の入力は +1 week、-3 days、+2 months のような変更式です。
両方の入力を読み込み、日付文字列を使用して DateTime オブジェクトを作成し、modify() メソッドを使用してその DateTime オブジェクトに変更式を適用し、変更後の日付を Y-m-d H:i:s 形式で出力してください。
入力形式:
- 1行目:
Y-m-d H:i:s形式の日付文字列(例:2024-03-15 14:30:25) - 2行目: 変更内容を示す文字列(例:
+1 week、-3 days、+2 months)
期待される出力: Y-m-d H:i:s 形式でフォーマットされた変更後の日付
チートシート
modify() メソッドを使用すると、自然言語の表現を使用して DateTime オブジェクトに時間を加算または減算できます:
<?php
$date = new DateTime();
$date->modify('+1 week'); // 1週間加算
$date->modify('-3 days'); // 3日減算
$date->modify('+2 months -1 day'); // 複雑な表現
?>このメソッドは既存の DateTime オブジェクトを直接変更し、strtotime() と同じ文字列形式('+1 day'、'-2 weeks'、または 'next Friday' など)を受け入れます。
自分で試してみよう
<?php
// 日付文字列を読み込む
$dateString = trim(fgets(STDIN));
// 変更内容の文字列を読み込む
$modificationString = trim(fgets(STDIN));
// TODO: 以下にコードを記述してください
// DateTimeオブジェクトを作成し、変更を適用して、結果をフォーマットします
// 変更された日付を出力する
echo $modifiedDate;
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
7日付と時刻の操作
'date()' 関数'time()' による Unix タイムスタンプDateTime オブジェクト入門DateTime オブジェクトのフォーマットDateTime オブジェクトの変更まとめ:日付の計算