第7章 標準クラスライブラリ / 第2回 模擬試験

PHPのDateTimeクラスに関する次の記述のうち、誤っているものはどれか。

`DateTime::createFromFormat()`で指定フォーマットの文字列から日時オブジェクトを生成できる。
`DateInterval`クラスは日時の期間(差分)を表現する。
`DateTime`オブジェクトは`modify()`メソッドで日時を変更できる。
`DateTime`オブジェクトは一度生成すると、いかなる方法でも値を変更できない。 正解
解説
`DateTime`オブジェクトは、生成後も`modify()`、`add()`、`sub()`、`setDate()`、`setTime()`などのメソッドで日時を変更できるミュータブル(可変)なオブジェクトです。「いかなる方法でも値を変更できない」という記述は誤りです(値を変更できない・不変にしたい場合は`DateTimeImmutable`クラスを使います)。 他の選択肢が正しい理由は次の通りです。 ・`DateTime::createFromFormat($format, $datetime)`は、指定したフォーマット文字列に従って日時文字列を解析し、`DateTime`オブジェクトを生成する静的メソッドです。 ・`DateInterval`クラスは、「3日間」や「1年2ヶ月」のような日時の期間・差分を表現するクラスで、`DateTime::diff()`の戻り値としても使われます。 ・`DateTime`オブジェクトは`modify('+1 day')`のように、相対的な表現を使って日時を変更できます。 例: ``` $date = DateTime::createFromFormat('Y-m-d', '2026-01-01'); $date->modify('+1 month'); echo $date->format('Y-m-d'); // 2026-02-01 ``` (参照: 独習PHP 第4版 第7章 標準クラスライブラリ 7.2節 DateTimeクラス p.313〜321)