あるシステムの年の扱い(SugarCRM)
2009/12/18
develop
phpのマニュアルにタイムスタンプについて注意書きが書いてあります。
http://www.php.net/manual/ja/function.strtotime.php
注意: タイムスタンプの有効な範囲は、通常、Fri, 13 Dec 1901 20:45:54 UTC から Tue, 19 Jan 2038 03:14:07 UTC までです (これらは、32 ビット符号付整数の最大及び最小に一致します)。 さらに全てのプラットフォームが負のタイムスタンプをサポートしている わけではありませんので、日付の範囲は Unix エポック以前にはならないかも知れません。 これは、例えば Windows やいくつかの Linux ディストリビューション、 いくつかの他のオペレーティングシステムでは 1970 年 1 月 1 日以前の日付では動作しない事を意味しています。 PHP 5.1.0 以降のバージョンでは、この制限はなくなっています。
1970年から2037年の間以外のタイムスタンプを、正常に取り扱えるかどうかは環境によるとのこと。
SugarCRMのソースを見たら、素直に1970年から2037年の間以外は指定しないでくれという対応をしてました。
if ( isset($_REQUEST['year']))
{
if ($_REQUEST['year'] > 2037 || $_REQUEST['year'] < 1970)
{
print("Sorry, calendar cannot handle the year you requested");
print("<br>Year must be between 1970 and 2037");
exit;
}
$date_arr['year'] = $_REQUEST['year'];
}
そのうちほとんどの環境がタイムスタンプを符号付き64ビット整数で扱うようになるのでしょうか。
(そしたら自動的に解決)