首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP Y2K38 年份 2038 問題成因與解決方案

     編輯:PHP 綜合知識

32 位系統中,有號整數儲存 Unix 時間戳最大值為 2^31-1,對應 2038-01-19 03:14:07 UTC,超過則溢出回 1970 年。

問題示範

<?php
$date = '2040-01-01 12:00:00';
echo strtotime($date); // 空/false
echo date('Y-m-d H:i:s', strtotime($date)); // 1970-01-01 00:00:00
?>

解決方案

  1. 升級 64 位系統 + 64 位 PHP:時間戳範圍擴展至數十億年。
  2. 使用 DateTime 類別(PHP 5.2+):內部使用 64 位整數或浮點數,不受 32 位限制。
    new DateTime('2040-01-01')
  3. 儲存為字串或 DATETIME:資料庫使用 DATETIME/TIMESTAMP 型別,應用層用字串傳遞。

64 位系統影響

64 位 PHP 整數為 64 位,不會 遇到 2038 問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved