2013年4月29日月曜日

[PHP]32bitマシンでPHPの日付を利用する場合の注意点

このエントリーをはてなブックマークに追加 はてなブックマーク - [PHP]32bitマシンでPHPの日付を利用する場合の注意点
修正に半日も使って面倒だったのでメモ。

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 件のコメント:

コメントを投稿