php - 2038年的问题
黄舟
黄舟 2017-04-11 10:15:38
[PHP讨论组]
今天遇到一个问题,就是php的时间戳在遇到2038年后,时间就会溢出,php提供的时间函数datetime可以解决这个问题。

$date = '2090-10-01';
$datetime = new DateTime($date);
echo '

正常时间: ', $datetime->format('Y-m-d H:i'), '

';//正常时间: 2090-10-01 00:00 echo '

时间溢出: ', date('Y-m-d H:i', strtotime($date)), '

';//时间溢出: 1970-01-01 08:00 但是感觉这个时间不太实用啊,它需要指定datetime格式的时间,而不是时间戳,如果我都有时间了,我还要你的format干嘛。 我现在有一个时间点,需要加上一个时间间隔,strtotime('+1000 year'),这个新得到的时间超过了2038年,结果是1970-01-01。。。。,怎么获取到相加的正确结果呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
黄舟

一看你就没看文档,DateTime对象可以用时间戳的哦,详细看http://php.net/manual/zh/date...

PHP中文网

php7 没毛病。

php > echo date("Y-m-d H:i:s", strtotime('+1000 year'));
3017-03-13 04:21:07

阿神
这是我新定义的一个获取时间的方法,过程化的
function getTime($format = 'Y-m-d H:i:s', $time = '', $suffix = '', $interval = ''){
    $date = date_create($time);
    date_add($date, date_interval_create_from_date_string($interval));
    return rtrim(date_format($date, $format) . ' ' . $suffix);
}
调用的时候getTime(),就可以获取当前datetime时间,getTime('Y-m-d', '', '', '+3 years')可以获取3年后的时间,如果我要获取某一天的最后一个时间点,比如2017-03-15 23:59:59,有什么比较好的方法吗?,我这里是用后缀拼接的,感觉有点low
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号