【PHP入門】date_formatの使い方

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関数の使用方法を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次