DateTimeクラス

DateTimeクラスは、OOPスタイルで日付と時刻を操作するための主要なツールです。日付/時刻オブジェクトの作成、変更、出力のフォーマットが可能です。

現在の時刻

現在の日付と時刻を持つDateTimeオブジェクトを作成してみましょう:

php<?php
  $date = new DateTime();
?>

特定の日付

指定された日付でDateTimeオブジェクトを作成してみましょう:

php<?php
  $date = new DateTime('2025-12-31');
?>

特定の日付と時刻

指定された日付と時刻でDateTimeオブジェクトを作成してみましょう:

php<?php
  $date = new DateTime('2025-12-31 12:59:59');
?>

出力のフォーマット

作成した日付は、formatメソッドを使用して指定されたフォーマットで出力できます。 現在の時刻に対してこれを行ってみましょう:

php<?php
  $date = new DateTime();
  echo $date->format('Y-m-d H:i:s');
?>

結果(実行タイミングによって変化します):

php'2025-11-15 14:25:00'

指定された日付のフォーマット

指定された日付をフォーマットしてみましょう:

php<?php
  $date = new DateTime('2025-12-31');
  echo $date->format('d.m.Y');
?>

コード実行結果:

php'31.12.2025'

間隔の加算

日付への間隔の加算は、addメソッドを通じて行われます:

php<?php
  $date = new DateTime('2025-05-15');
  $interval = new DateInterval('P10D'); // 10日間
  $date->add($interval);
  echo $date->format('Y-m-d');
?>

コード実行結果:

php'2025-05-25'

間隔の減算

日付からの間隔の減算は、subメソッドを通じて行われます:

php<?php
  $date = new DateTime('2025-05-15');
  $interval = new DateInterval('P1M2D'); // 1ヶ月と2日間
  $date->sub($interval);
  echo $date->format('Y-m-d');
?>

コード実行結果:

php'2025-04-13'

新しい日付の設定

DateTimeオブジェクトに新しい日付を設定できます。 これはsetDateメソッドを通じて行われます:

php<?php
  $date = new DateTime();
  $date->setDate(2025, 12, 31);
  echo $date->format('Y-m-d');
?>

コード実行結果:

php'2025-12-31'

時刻の設定

DateTimeオブジェクトに新しい時刻を設定できます。 これはsetTimeメソッドを通じて行われます:

php<?php
  $date = new DateTime();
  $date->setTime(15, 30, 0);
  echo $date->format('H:i:s');
?>

コード実行結果:

php'15:30:00'

日付の比較

日付オブジェクトを比較できます:

php<?php
  $date1 = new DateTime('2025-01-01');
  $date2 = new DateTime('2025-02-01');
  
  if ($date1 < $date2) {
    echo '+++';
  } else {
    echo '---';
  }
?>

日付間の差

diffメソッドを使用して、日付間の差を計算できます。 差はDateIntervalオブジェクトとして返されます:

php<?php
  $date1 = new DateTime('2023-01-01');
  $date2 = new DateTime('2023-02-15');
  
  $interval = $date1->diff($date2);
  echo $interval->format('%m months %d days');
?>

コード実行結果:

php'1 months 14 days'

タイムゾーン

DateTimeオブジェクトの作成時に、タイムゾーンを指定できます:

php<?php
  $timeZone = new DateTimeZone('Europe/Moscow');
  $date = new DateTime('2025-12-31 23:59:59', $timeZone);
  
  echo $date->format('Y-m-d H:i:s e');
?>

コード実行結果:

php'2025-12-31 23:59:59 Europe/Moscow'

関連項目