PHP date関数を使った日付・時刻表示の基本と応用を解説
PHPでは日付や時刻の操作が頻繁に行われます。
この記事では、組み込み関数date()
を使って、現在の日時を指定のフォーマットで取得する方法など、基本的な使い方と応用例を紹介します。
たとえば、
date()関数の基本構造
関数の書式と動作
PHPのdate()
関数は、指定したフォーマットに従って日付や時刻を文字列として返してくれます。
基本的な書式は以下のとおりで、第一引数にフォーマット文字列を指定し、第二引数にタイムスタンプ(省略時は現在の日時)が指定できます。
<?php
// 現在の日付と時刻をフォーマットして表示する例
$formattedDate = date('Y-m-d H:i:s'); // '2023-10-05 14:20:30' のような文字列が返る
echo $formattedDate;
?>
2023-10-05 14:20:30
引数と返り値の仕様
date()
関数には必ずフォーマットを指定する必要があります。
- 第一引数:フォーマット文字列。例えば、
'Y-m-d'
は年-月-日の形式となります。 - 第二引数:省略可能な整数値のタイムスタンプで、タイムゾーンの影響を受けます。省略すると、現在の日時が使用されます。
返り値は、指定されたフォーマットに沿って作成された文字列です。
以下は、引数にタイムスタンプを指定して実行する例です。
<?php
// 特定のタイムスタンプを基に日付をフォーマットする例
$timestamp = 1633414800; // 例: 2021-10-05 00:00:00 UTC相当
$formattedDate = date('Y-m-d H:i:s', $timestamp);
echo $formattedDate;
?>
2021-10-05 00:00:00
日付フォーマットの指定方法
各書式文字の意味
date()
関数で使用するフォーマット文字は、各要素の日付や時刻の情報を表すために用いられます。
例えば、Y
は4桁の年、m
はゼロ埋めされた2桁の月を表します。
下記の項目ごとに、代表的なフォーマット文字について説明いたします。
年・月・日表記の指定
日付成分を構成する要素には、以下のようなフォーマット文字が利用できます。
Y
:4桁の年(例:2023)y
:2桁の年(例:23)m
:ゼロ埋め済みの月(例:04)n
:ゼロ埋めされない月(例:4)d
:ゼロ埋め済みの日(例:07)j
:ゼロ埋めされない日(例:7)
時・分・秒表記の指定
時刻成分に関しては、以下のフォーマット文字が利用できます。
H
:24時間形式の時(例:15)h
:12時間形式の時(例:03)i
:分(例:05)s
:秒(例:09)a
またはA
:午前/午後の表記(例:am または PM)
複合フォーマットの実例
複合的なフォーマットを利用することで、日付と時刻を含む詳細なフォーマットの文字列を作成できます。
下記のサンプルコードでは、西暦、月、日、時、分、秒を組み合わせた例を示します。
<?php
// 複合フォーマット例: '2023年04月05日 15時30分25秒'
$formattedDate = date('Y年m月d日 H時i分s秒');
echo $formattedDate;
?>
2023年04月05日 15時30分25秒
タイムゾーン設定
タイムゾーンの変更手法
PHPではタイムゾーンを正しく設定することで、意図した日時や時刻を表示できます。
タイムゾーンの変更は、php.ini
ファイルで設定する方法とプログラム内で設定する方法の2通りがあります。
php.iniでの設定
php.ini
ファイルでは、グローバルなタイムゾーン設定を以下のように記述します。
設定後、Webサーバを再起動する必要があります。
date.timezone = "Asia/Tokyo"
プログラム内での設定
プログラム内でタイムゾーンを設定する場合は、date_default_timezone_set()
関数を利用します。
サンプルコードは下記の通りです。
<?php
// タイムゾーンを 'Asia/Tokyo' に設定する例
date_default_timezone_set('Asia/Tokyo');
$formattedDate = date('Y-m-d H:i:s');
echo $formattedDate;
?>
2023-10-05 14:20:30
エラー対応と注意事項
よくあるエラーケース
date()
関数に関するエラーとしては、以下の点が挙げられます。
- 誤ったフォーマット文字を使用した場合:予期しない結果が返る可能性があります。
- 無効なタイムスタンプを指定した場合:予期せぬ日時が表示される場合があります。
- タイムゾーンが適切に設定されていない場合:日時がズレることがあるため、環境に合わせたタイムゾーン設定が求められます。
書式指定時の留意点
date()
関数を利用する際には、以下の点に注意する必要があります。
- フォーマット文字は大文字・小文字を区別するため、正確に使用する必要があります。
- 複雑なフォーマットを作成する際、意図しない文字列が混入しないように、フォーマット部分とリテラル部分の区別に注意してください。
- プログラム内でタイムゾーンを設定している場合、
php.ini
との整合性にも気を配ることが求められます。
以上、date()
関数の基本構造、日付フォーマットの指定方法、タイムゾーン設定およびエラー対応と注意事項について解説いたしました。
まとめ
この記事では、PHPのdate()
関数の基本構造、各フォーマット指定方法、タイムゾーンの設定手法やエラー対応について解説しました。
全体を通じ、PHPでの日時操作の基本が理解できる内容でした。
ぜひ自分の環境で試して、実際に活用してみてください!