Menu
CoddyTech

DateTime オブジェクトの変更

CoddyのPHPジャーニー「論理とフロー」セクションの一部。レッスン 50/68。

DateTimeオブジェクトを取得したら、別の時点を表すように変更する必要が生じることがよくあります。modify()メソッドを使うと、自然言語の表現でDateTimeオブジェクトに時間を加算または減算できるため、日付の計算を直感的で読みやすく行えます。

modify()メソッドは、'+1 day'、'-2 weeks'、'next Friday'など、strtotime()で使用できるものと同じ種類の文字列を受け取ります。毎回新しいオブジェクトを作成するのとは異なり、このメソッドは既存の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'のような複雑な式を使ったりして、高度な日付計算を実行しながら、コードを明確で保守しやすい状態に保てます。

challenge icon

チャレンジ

簡単

2 つの入力を受け取ります。形式が Y-m-d H:i:s の日付文字列と、変更文字列です。最初の入力は特定の日時(例: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 の形式でフォーマットされた変更後の日付

自分で試してみよう

<?php
// 日付の文字列を読み込む
$dateString = trim(fgets(STDIN));

// 変更内容の文字列を読み込む
$modificationString = trim(fgets(STDIN));

// TODO: 以下にコードを書く
// DateTime オブジェクトを作成し、変更を適用して、結果をフォーマットする


// 変更後の日付を出力する
echo $modifiedDate;
?>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン

自分で練習してみよう: PHPオンラインコンパイラ