php 如何计算指定时间,往后1个月的时间戳
迷茫
迷茫 2017-04-11 09:51:25
[PHP讨论组]

举个例子,我要获取当前的时间戳,可以这样:

time();

我要获取以当前时间为基础,往后1个月的时间戳,可以这样:

strtotime('+1 month');

我要获取指定时间的时间戳,比如2019-11-23,可以这样:

strtotime('2019-11-23');

那么问题来了,我要以任意一个时间节点作为基础,在此之上获取往后1个月的时间戳,请问怎么做?比如说2019-11-23往后1个月的时间戳。

需要考虑到闰年、闰月、大小月份哦

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
大家讲道理

int strtotime ( string $time [, int $now = time() ] )

strtotime 可以传入第二个参数,用来表示参考时间,默认是当前时间,所以 strtotime('+1 month'); 才会计算出下个月的时间。

天蓬老师

这个么?

<?php
$date = new DateTime('2019-11-23');
$date->add(new DateInterval('P1M'));
echo $date->format('Y-m-d') . "\n";
?>
大家讲道理

1月31日往后一个月是二月28/29号,还是3月1/2/3号?
2月28/29日往后一个月是3月28/29/30/31?
3月31日往后一个月是4月30号还是5月1号?

strtotime+1 month是直接加31天,很可能不是你想要的结果:

date('Y-m-d', strtotime('+1 month', strtotime('2016-01-31'))); // 2016-03-02
date('Y-m-d', strtotime('+1 month', strtotime('1999-01-31'))); // 1999-03-03
date('Y-m-d', strtotime('+1 month', strtotime('1999-03-31'))); // 1999-05-01

DateInterval('P1M')也是类似的结果。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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