Aug 28
逆引きrhaco50: timestampの制限を超えて日付を扱う
逆引きもやっと50になりました。だからと言ってやることは全然変わりません。
timestampは有効な範囲が1900年代程度からと決まっています。
有効なタイムスタンプの範囲は、通常 Fri, 13 Dec 1901 20:45:54 GMT から Tue, 19 Jan 2038 03:14:07 GMT までです (これらの日付は、32 ビット符号付き整数の最小および最大値に 対応します)。 しかし、PHP 5.1 より前のバージョンでは、システム環境によっては (例: Windows) この範囲が 1970 年 1 月 1 日から 2038 年 1 月 19 日 までに制限されます。
(PHPマニュアル(date関数)より)
その範囲を超えた日付を扱いたい場合、rhacoでは
DateUtil::parseIntDate() DateUtil::formatDate()
を使用できます。これらのメソッドでは日付を20080828の様な整数で扱うので、原理的にはどのような日付でも大丈夫です。
$intDate = DateUtil::parseIntDate('2008/8/28');
$intDate = DateUtil::parseIntDate('2008-8-28');
$intDate = DateUtil::parseIntDate('2008/08/28');
$intDate = DateUtil::parseIntDate('2008-08-28');
//全て$intDate === 20080828となる
ただし、DateUtilに用意されている日付を比較するメソッド(eq, qtなど)は使えません。整数値なので普通に大小比較すれば良いと思います。
この値を日付に戻すコードは
$textDate = DateUtil::formatDate(20080828); //$textDate === '2008/08/28'となる
となります。