修正に半日も使って面倒だったのでメモ。
32bitのPHPでUNIXタイムスタンプを利用するdate,mktime,strtotime関数を利用して2038年を超えるような日付を扱おうとすると桁あふれになってしまい、1970年1月1日として扱われてしまいます。(2038年問題)
その場合PHP5から利用可能なdate_create,date_format関数などを利用すれば桁あふれなく対応が可能です。日付の計算はdate_add,date_subが利用出来ます。また、Datetime同士での比較も可能です。
// 現在の日付を規定フォーマットで表示
$now = date_create('now');
echo date_format($now, 'Y-m-d H:i:s');
// 2000年1月20日の10日前の日付を取得
$date = new DateTime('2000-01-20');
$date->sub(new DateInterval('P10D'));
// 比較
if($now > $date)
{
//こちらに遷移
}
PHP知っている人からすると「こんな事も知らないのかよ」ってつっこみができそうですが。。。
0 件のコメント:
コメントを投稿