PHPで日付のフォーマットを変更する方法

公開日:2016/08/28  最終更新日:2021/01/24  カテゴリー:PHP

よく日付の形式変換の方法に正規表現を用いた方法が紹介されていますが、決まった形式以外には対応できません。
また無理やり感があり個人的にあまり好きではないので、色々な形式に対応できる別の方法をご紹介させていただきます。

実際のコード

以下のように $time に日時を示す文字列を入れて, date関数の 第一引数に フォーマットを指定します。
そうすると 以下のコードでは 指定した日時が 指定したフォーマットで表示されます。

$time = '2016/08/28 23:25:55';
echo date('Y年n月j日 G時i分s秒', strtotime($time));

実行結果: 2016年08月28日 23時25分55秒

コードの解説

strtotime関数 で 指定された日時を Unix タイムスタンプに変換します。
それを date関数 の第二引数に指定して実行することで 第一引数に指定されたフォーマットに変換しています。
使用できるフォーマットは PHP: DateTime::format - Manual で確認して下さい。

コピペ用フォーマット

表示形式date関数の第一引数
XXXX-XX-XX XX:XX:XXY-m-d H:i:s

日本語には非対応

$time = '2016年08月28日 23時25分55秒';
echo date('Y年n月j日 G時i分s秒', strtotime($time));

上記を実行すると 1970年1月1日 9時00分00秒 が表示され正しく機能しません。
原因は strtotime関数 が英字形式以外には対応していないからです。

参考文献

本サイトでは URLに日本語を含んでいます。
メールなどで共有する場合は リンクとして認識されない場合がございますので、こちらをご利用ください。