SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

あるシステムの年の扱い(SugarCRM)

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ビット整数で扱うようになるのでしょうか。
(そしたら自動的に解決)

関連するメモ

コメント