[PHP]フォーマットを指定してアメリカ式・イギリス式・日本式の日付を相互変換する

Pocket

PHP では strtotime 関数を使うことで文字列の日付を認識して UNIX タイムスタンプに変換することができ、
そのタイムスタンプを date 関数で用いれば別のフォーマットの日付に書きなおすことが出来ます。

しかし、「03/01/12」という日付を見て、日本であれば 2003年1月12日 のことであると判断しますが、
アメリカでは 2012年3月1日 と判断され、イギリスでは 2012年1月3日 と解釈されてしまうかもしれません。

PHP でも同じことが起きます。実際にサンプルを作って実行してみます。

<?php
$str = '03/01/12';
$time = strtotime($str);

echo date("Y年m月d日", $time);

・実行結果

2012年03月01日

これがもし日本式の順番で書かれていたとしたらこの日付は間違っていることになります。
そこで文字列がどのような書式に則って書かれているかを指定することで正しい認識をさせることが出来ます。

<?php
$str = '03/01/12';
$date = DateTime::createFromFormat('y/m/d', $str);

echo $date->format('Y年m月d日');

・実行結果

2003年01月12日

DateTime クラスは PHP 5.0 以上で使えるクラスで、日付に関する様々な機能が使えます。
サンプルのように createFromFormat() で書式を指定すれば、format() 関数で自由な書式に書き換えることが出来ます。


Similar Posts:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です