Menu
Coddy logo textTech

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' のような複雑な式を使用したりすることで、コードの明快さと保守性を維持しながら、高度な日付演算を実行できます。

quiz icon腕試し

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

quiz icon腕試し

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

quiz icon腕試し

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

challenge icon

チャレンジ

簡単

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;
?>
quiz icon腕試し

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

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