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

公開日:2016/08/28  最終更新日:2018/05/02  カテゴリー: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: date - Manual で確認して下さい。

日本語には非対応

$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に日本語を含んでいます。
メールなどで共有する場合は リンクとして認識されない場合がございますので、こちらをご利用ください。