よく日付の形式変換の方法に正規表現を用いた方法が紹介されていますが、決まった形式以外には対応できません。
また無理やり感があり個人的にあまり好きではないので、色々な形式に対応できる別の方法をご紹介させていただきます。
以下のように $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:XX | Y-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関数
が英字形式以外には対応していないからです。