在項目中有的業務場景需要用戶購買會員或者套餐等涉及到有效期問題的功能,如果用戶購買較多超過了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