通常であれば、PHP4で時刻関連の処理を行うには、UNIXエポック時間(1970/01/01 00:00:00 GMT)からの通算秒数を返す time() 関数を用います。 この関数で取得できる値(time_t型とも言います)を用いると、閏年の計算などを考慮しなくても、秒単位で簡単に日時計算を行うことが可能になります。 ただし、これは内部的には32bitのsigned int型であるため、1970/01/01 00:00:00 GMT(内部的には0)〜2038/01/19 03:14:07 GMT(内部的には231-1)の間の日時しか扱えないという制限があります。 そこで、誕生日の入力のために1969年以前の日時を扱う必要があるときや、スケジューラのために2038/01/20以降の日時を扱いたい際に、どのように扱えばよいかということが焦点になります。(参考:2038年問題 ) 最も簡単な方法は、ADOdbライブラリ の中に含まれているadodb-time.inc.phpを include() して使うことです。 ADOdbライブラリ内の日時関数は 64bit int型(float型)で処理するように作成されていますので、ほぼPHPの時刻関数と同じ書式で、紀元前や西暦3000年などの日時を扱うことが出来ます。 ※PHP5.1以降では、time()関数も64bit intでの表現が可能になっていますので、ADOdbライブラリを使う必要はありません
<?php /* 現在時刻の50000日前の日時を表示する */ include_once("adodb-time.inc.php"); $day = 50000; $time = time() - 60*60*24 * $day; print "adodb_date()で{$day}日前の日時を表示:" .adodb_date("Y/m/d H:i:s T", $time); ?>
⇒ 実行結果
2chで話題のやつです(´-ω-)♂ http://gffz.biz/index.html