【php】Datetimeクラスで日付を扱う(タイムスタンプに依存したくない)
何かにつけて使いづらいなと思っていた date()関数と time()関数。
タイムスタンプにべったり依存するのはもうやめたい。
タイムスタンプは値の範囲に限界がある。今生きている人の誕生日ですらまともに扱いづらい(1960年生まれ→タイムスタンプ0以前、1901年生まれ→32bitのタイムスタンプの範囲外)。
そこで Datetimeクラス(php5.2.0以降 標準装備)
date()関数だと、
date('Y年m月d日', strtotime('2010-04-01')); //2010年04月01日 date('Y年m月d日', strtotime('1960-05-05')); //1960年05月05日 date('Y年m月d日', strtotime('1192-01-01')); //1970年01月01日 ←使えない
Datetimeクラスだと、
$d = new Datetime('2010-04-01'); $d->format('Y年m月d日'); //2010年04月01日 $d = new Datetime('1960-05-05'); $d->format('Y年m月d日'); //1960年05月05日 $d = new Datetime('1192-01-01'); $d->format('Y年m月d日'); //1192年01月01日 ←まだいける $d = new Datetime('0010-04-01 12:34:56'); $d->format('Y年m月d日 H時i分s秒'); //0010年04月01日 12時34分56秒 ←まだまだいける
Datetime すばらしい!
php5.2.0より古い環境では、phpで書かれたものでよければ、Zend_Date や PEAR::Date という選択もある。
コメント