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

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部として、これまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。プログラミング初学者に向けてわかりやすく、ためになるコンテンツ作りを心がけています。

おすすめコンテンツ

いまならレッスン期間が2週間延長!この秋、プログラミングを学ぼう

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー