2012年11月7日水曜日

PHPで手軽に日時を整形する

PHPで日時を生成する方法はいくつかあります。
 date関数やstrftime関数などが代表的な例ですが。
今回はそうした日付を生成する関数を使わずに日時を整形する方法について書き留めます。

 例えばこんなシーンの場合

例として、MySQLで構築されたDBに次の日付の一覧が格納されたフィールドを呼び出した配列があると仮定します。

$date = array(
  "2012-11-06",
  "2012-11-05",
  "2012-11-04",
  "2012-11-03",
  "2012-11-02",
  "2012-11-01"
);

DBから呼び出し配列に格納された日付は全て文字列です。
この文字列で表現された日付を整形します。

$dateの日付を整形する : date_format

単に日付を生成するだけならdate関数で事足ります。
しかし、そうではない場合。例えばDBから日付の文字列を取り出したものを「YYYY年MM月DD日」という形式で整形したいとなると結構ほねがおれます。
正規表現でハイフンを場所に応じて文字を置き換える方法がないわけではないですが、結構冗長な表現になりそうです。
そこで登場するのがdate_format関数になります。

foreach($date as $d) {
  date_create($d);
  echo date_format($d, 'Y年m月d日');
}

ここで気をつけないといけないのは、date_formatをする前にdate_createを実行している点。
文字列で書かれた日付を、DateTimeオブジェクトとして返却してくれるようです。
つまりdate_formatを実行するためには、第1引数にはDateTimeオブジェクト型の日付が入らなくてはいけないみたいです。
文字列(String型)の日付ではdate_formatは返却値を返してくれません。



0 件のコメント:

コメントを投稿