SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【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 という選択もある。

関連するメモ

コメント