PHPには日付のフォーマットを設定するdate_format関数があります。
この記事では、
・date_formatとは
・date_formatの使い方
という基本的な内容から、
・Unixタイムスタンプに変換する方法
・日付をチェックする方法
などの応用的な使い方に関しても解説していきます。
今回はそんなdate_format関数について、わかりやすく解説します!
date_formatとは
date_format関数は、日時の値を指定した形式にフォーマットする関数です。
第一引数にdate_create関数で設定したDateTimeのオブジェクトを指定し、第二引数にフォーマット文字列を指定します。
string date_format ( DateTime $object , string $format )
date_formatの使い方
以下にdate_format関数を使用してのフォーマット指定方法を、パターン別に記述します。
<?php //日時を設定する $date = date_create('2017-04-01'); //パターン別に実行結果を出力する echo date_format($date, 'y/m/d'); echo '<br>'; echo date_format($date, 'Y-m-d H:i:s'); echo '<br>'; echo date_format($date, 'Y年m月d日H時i分s秒'); echo '<br>'; echo date_format($date, 'g:i A'); echo '<br>'; echo date_format($date, 'G:i a'); echo '<br>'; echo date_format($date, 'Y/m/d g:ia l F'); echo '<br>'; ?>
実行結果 17/04/01 2017-04-01 00:00:00 2017年04月01日00時00分00秒 12:00 AM 0:00 am 2017/04/01 12:00am Saturday April
サンプルでは、最初にdate_create関数を使用して、引数に指定した日付でDataTimeのオブジェクトを取得しています。
date_format関数の第一引数に、設定したDateTimeクラスのオブジェクトを指定し、第2引数にさまざまな日付フォーマットのパラメータを指定しています。
dateやdate_formatで引数に指定するパラメータについては、以下のサイトにPHPでサポートしているパラメータの一覧が記載されています。
http://php.net/manual/ja/function.date.php
フォーマット指定時の注意点
PHPは、Javaなどの他のプログラミング言語と日付パターンの方法が若干異なります。
そのため、日付を’YYYY mm dd’の形式で指定すると、フォーマットがくずれてしまいますので注意しましょう。
例えば、以下のように日付パターンを指定するとフォーマットがくずれます。
echo date_format($date, 'YYYY-mm-dd H:i:s');
実行結果 2017201720172017-0404-0101 00:00:00
Unixタイムスタンプに変換する
タイムスタンプとは、プログラムの実行日時やファイルの作成・更新日時などを示す文字列のことを指します。
ファイルやディレクトリをプロパティで確認すると、作成日時・更新日時・アクセス日時などが確認できますが、それらの情報もタイムスタンプと考えてよいでしょう。
プログラムにおけるタイムスタンプは、データやログを解析するのにも大変重要な情報となります。
PHPではstrtotime関数を使用すると、取得した日付からUnixタイムスタンプ(1970年1月1日からの秒数)に変換することができます。
以下にstrtotime関数を使用して、日付データをUnixタイムスタンプに変換する方法を記述します。
<?php // Unixタイムスタンプに変換 $date = '2017-4-1'; echo strtotime($date); ?>
実行結果 1491004800
日付をチェックする
指定したフォーマットが正しいかチェックするためには、if文で日付フォーマットを確認し、date_get_last_errors関数でエラー内容を出力する方法があります。
date_get_last_errors関数は、最後に発生したエラーを取得する関数で、エラー内容を返します。
以下にdate_get_last_errors関数を使用した、日付をチェックする方法を記述します。
<?php //日付フォーマットを確認する $date = date_create('2017-004-01'); if (!$date) { $e = date_get_last_errors(); foreach ($e['errors'] as $error) { echo "$error"; } exit(1); } echo date_format($date, 'Y/m/d'); ?>
実行結果 Unexpected character
サンプルではdate_create関数の引数に月の値を3桁で設定しています。
そのため、正しい日付フォーマットではないためif文のチェックでエラーとなり、date_get_last_errorsが直前のエラーを取得し、“Unexpected character”のエラー情報を出力しています。
まとめ
ここではPHPのdate_format関数について、基本的な使い方や日付をチェックする方法、日付をUnixタイムスタンプに変換する方法について、説明しました。
PHPに限らず、システム開発において日付のデータは、ログ出力や操作日時を記録するなど、非常に重要な情報となります。
もし、date_create関数の使用方法を忘れてしまったら、この記事を思い出してくださいね!