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

猜你喜欢

转载自www.cnblogs.com/kevinggk/p/12066995.html
今日推荐