現在の日付に数日を追加したいのですが、次のコードを使用します。
$arrSearchValues=1000;
$datToDate = date('Y-m-d', strtotime("+$arrSearchValues days"));
日数が 9070 を超えるまで、すべてが完璧に機能しています。この問題を克服する方法はありますか?例を教えてください
現在の日付に数日を追加したいのですが、次のコードを使用します。
$arrSearchValues=1000;
$datToDate = date('Y-m-d', strtotime("+$arrSearchValues days"));
日数が 9070 を超えるまで、すべてが完璧に機能しています。この問題を克服する方法はありますか?例を教えてください
2038年1月19日は特別な日です。その日、 Unix時間 に基づく32ビットの日付/時刻の実装では、日付と時刻を表すビットが不足します。そのため、追加がオーバーフローし、結果が最初にリセットされます。 Unixエポック(1970年1月1日)。
この制限を回避するには、withandfriendsに切り替えDateTime
ます。
$d = new DateTime();
$d->modify("+10000 days");
echo $d->format("Y-m-d");
http://php.net/manual/en/function.strtotime.phpによると
タイムスタンプの有効な範囲は通常、1901 年 12 月 13 日金曜日 20:45:54 UTC から 2038 年 1 月 19 日火曜日 03:14:07 UTC までです。(これらは、32 ビット符号付き整数の最小値と最大値に対応する日付です。)
9070 日後、有効なタイムスタンプを取得していないため、タイムスタンプが範囲外になり、エラーが発生します
有効なタイムスタンプでない場合はエラーを表示できます
$arrSearchValues = 1000;
if(strtotime("+$arrSearchValues days"))
{
$datToDate = date('Y-m-d', strtotime("+$arrSearchValues days"));
}
else
{
echo "Out of range";
}
これを試してみてください。これが最速の方法である必要があります。
$arrSearchValues=time()+1000*24*60*60;
$datToDate = date('Y-m-d', $arrSearchValues);
申し訳ありませんが、time() を使用するのを忘れていました。更新されたコードを確認してください。