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

PHPの`DateTime`クラスに関する次の記述のうち、正しいものはどれか。

`DateTime`オブジェクトは、現在の日時を取得できない。
`format()`メソッドは、`DateTime`オブジェクトの日時を指定のフォーマットで整形する。 正解
`add()`メソッドは、`DateTime`オブジェクトから時間を減算する。
`diff()`メソッドは、2つの`DateTime`オブジェクトの差分を計算できない。
解説
`format()`メソッドは、`DateTime`オブジェクトが保持する日時を、指定した書式文字列(`Y-m-d H:i:s`など)に整形して文字列で返します。 他の選択肢が誤りである理由は次の通りです。 ・`new DateTime()`は引数を省略すると現在日時でインスタンス化されるため、「現在の日時を取得できない」というのは誤りです。 ・`add()`は`DateInterval`を加算するメソッドで、減算は`sub()`が担当します。 ・`diff()`は2つの`DateTime`の差を`DateInterval`オブジェクトとして返すため、「計算できない」は誤りです。 例: ``` $start = new DateTime('2026-01-01'); $end = new DateTime('2026-03-15'); $diff = $start->diff($end); echo $diff->days; // 73 ``` 実務では、意図せず元のオブジェクトが書き換わる`DateTime`の可変性がバグの原因になりやすいため、`DateTimeImmutable`を使い分ける設計もよく使われます。 (参照: 独習PHP 第4版 第7章 標準クラスライブラリ 7.2節 DateTimeクラス p.313〜322)