PHP 時間戳超過2038年以后的解決方法


在項目中有的業務場景需要用戶購買會員或者套餐等涉及到有效期問題的功能,如果用戶購買較多超過了2038年,那么按照普通的時間戳轉換日期或者日期轉換時間戳就會出現問題,

這種情況是有存在的可能的,所以需要有解決的方法,目前php5.2版本以后可以內置DateTime對象進行處理

工作中幾種處理方法:

// 1、日期字符串轉換為時間戳

$obj = new DateTime("2790-08-08");

echo $obj->format("U"); // 25895606400

 

// 2、時間戳轉換為日期字符串

$obj = new DateTime("@25895606400"); // 這里時間戳前要寫一個@符號

$timezone = timezone_open('Asia/Shanghai'); // 設置時區

$obj->setTimezone($timezone);

echo $obj->format("Y-m-d H:i:s"); // 2790-08-08 00:00:00

 

// 而且DateTime還可以有其他玩法

$obj = new DateTime("2790-08-08 23:59:59");

echo $obj->format("Y/m/d H:i:s"); // 換種方式輸入時間字符串2790-08-08 23:59:59


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM