【PHP】日付・時刻を取得して表示する例|DateTimeクラス、DateTimeImmutableクラス

PHPでは、日付・時刻を表すことができるDateTimeクラス、DateTimeImmutableクラスがあります。

今回は、そのクラスを使用し、日付・時刻を取得して表示する例となります。

DateTimeクラス、DateTimeImmutableクラスで日付・時刻を取得する方法

DateTimeクラス、DateTimeImmutableクラスで日付・時刻を取得するには、まず、オブジェクト(インスタンス)を作成します。そして、format メッソドで日付・時刻のフォーマット文字列を指定します。

また、DateTimeImmutableクラスはDateTimeクラスとほぼ同じですが、 DateTimeImmutableクラスでは、作成したオブジェクトは変更せずに新しいオブジェクトを返します。詳しくは以下のリンク先を参考にしてみてください。

以下、それぞれ日付・時刻を取得して表示する例となります。なお、今回の例では、DateTimeImmutableクラスを使用しています。

現在の日付・時刻を取得する例

以下は、現在の日付・時刻を取得する例となり、日付・時刻を表示させたい箇所に記述します。

<?php
// DateTimeImmutableクラスのオブジェクト(インスタンス)を作成
$datetime = new DateTimeImmutable();
// formatメソッドで、日付・時刻の表示形式を指定
echo $datetime->format('Y年m月d日H時i分s秒');
?>

上記例では、formatメッソドの引数に、日付・時刻を取得できるY・m・d・H・i・sの文字列を利用して、フォーマット文字列を指定しました。

日付・時刻を取得できる、その他の文字列については以下のリンク先を参考にしてみてください。

PHP: date - Manual

また、以下はオブジェクトの第2引数にタイムゾーンを指定して、現在の日時を取得する例となります。

<?php
// タイムゾーンを指定して、現在の日時を取得する例
$datetime = new DateTimeImmutable('now', new DateTimeZone('Asia/Tokyo'));
echo $datetime->format('Y年m月d日H時i分s秒');
?>

指定できるその他のタイムゾーンについては、以下のリンク先を参考にしてみてください。

PHP: サポートされるタイムゾーンのリスト - Manual

指定した日付・時刻を表示する例

PHPで解釈可能な日付・時刻の書式を使用する例

PHPでは、日付・時刻を扱う関数などで解釈可能な日付・時刻の書式があります。

以下は、その解釈可能な日付・時刻の書式を使い、指定したフォーマット文字列で日付・時刻を出力する例となります。

日付を指定したフォーマットを使用する例

<?php
// 文字列'1928/06/14'を指定し「1928年06月14日16時00分00秒」を表示する例
$datetime = new DateTimeImmutable('1928/06/14 16:00:00');
echo $datetime->format('Y年m月d日H時i分s秒');
?>

相対的なフォーマットを使用する例

<?php
// 文字列'tomorrow 14:00'を指定し「明日の14時」を表示する例
$tomorrow = new DateTimeImmutable('tomorrow 14:00');
echo $tomorrow->format('Y年m月d日H時');

// 文字列'last day of'を指定し「月末の日付」表示する例
$last_date = new DateTimeImmutable('last day of');
echo $last_date->format('Y年m月d日');
?>

日付・時刻を扱う関数などで解釈可能な、その他の日付・時刻の書式については、以下のリンク先を参考にしてみてください。

PHP: サポートする日付と時刻の書式 - Manual

PHPで解釈できない日付・時刻の書式を使用する例|createFromFormat

createFromFormatメソッドでは、日付・時刻を扱う関数などで解釈できない日付・時刻の書式から、指定したフォーマット文字列で日付・時刻を出力することが可能です。

以下、例となります。

<?php
// 文字列'1928年06月14日 13時30分'を使用し、1928-06-14 13:30と表示する例
$datetime = DateTimeImmutable::createFromFormat('Y年m月d日 H時i分', '1928年06月14日 13時30分');
echo $datetime->format('Y-m-d H:i'); 
?>

createFromFormatメソッドについて

createFromFormatメソッドは、オブジェクト(インスタンス)を作成せずに利用できる静的メソッドとなり、「クラス名::(スコープ定義演算子)静的メソッド名」として呼び出します。

createFromFormatメソッドでは、第2引数で指定した日付・時刻の文字列を、第1引数に指定したフォーマット文字列に沿って日付・時刻を返します。

また、第3引数にはタイムゾーンを指定することができます。

整数の日付・時刻を使用する例|setDate、setTime

以下は、setDateメソッド、setTimeメソッドを使い整数から、指定したフォーマット文字列で日付・時刻を出力する例となります。

<?php
// 整数を使用し日付を表示する例。
$date = new DateTimeImmutable();
echo $date->setDate(1928, 6, 14)->format('Y年m月d日');

// 整数を使用し日付・時刻を表示する例。
$datetime = new DateTimeImmutable();
echo $datetime->setDate(1967, 10, 9)->setTime(13, 30)->format('Y年m月d日H時i分');
?>

setDateメソッドについて

整数で日付を指定する場合には、オブジェクト(インスタンス)を作成し、setDateメソッドの引数に、'年, 月, 日'と順番に整数で指定します。

setTimeメソッドについて

整数で時刻を指定する場合には、オブジェクト(インスタンス)を作成し、setTimeメソッドの引数に、'時, 分, 秒'と順番に整数で指定します。また、'秒'は省略可能です。

日付・時刻を扱う例

DateTimeクラス、DateTimeImmutableクラスでは、オブジェクトを利用し日付・時刻の加算、減算、差分の取得なども可能です。詳しくは、以下のリンク先を参考にしてみてください。

参照サイト・書籍

コメントまたはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。Twitterで返信する場合はコチラから。