举个例子,我要获取当前的时间戳,可以这样:
time();
我要获取以当前时间为基础,往后1个月的时间戳,可以这样:
strtotime('+1 month');
我要获取指定时间的时间戳,比如2019-11-23
,可以这样:
strtotime('2019-11-23');
那么问题来了,我要以任意一个时间节点作为基础,在此之上获取往后1个月的时间戳,请问怎么做?比如说2019-11-23
往后1个月的时间戳。
需要考虑到闰年、闰月、大小月份哦
举个例子,我要获取当前的时间戳,可以这样:
time();
我要获取以当前时间为基础,往后1个月的时间戳,可以这样:
strtotime('+1 month');
我要获取指定时间的时间戳,比如2019-11-23
,可以这样:
strtotime('2019-11-23');
那么问题来了,我要以任意一个时间节点作为基础,在此之上获取往后1个月的时间戳,请问怎么做?比如说2019-11-23
往后1个月的时间戳。
需要考虑到闰年、闰月、大小月份哦
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')
也是类似的结果。
<?php
$date = new DateTime('2019-11-23');
$date->add(new DateInterval('P1M'));
echo $date->format('Y-m-d') . "\n";
?>
4 回答13.5k 阅读✓ 已解决
5 回答7.8k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
3 回答491 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.5k 阅读
2 回答809 阅读
int strtotime ( string $time [, int $now = time() ] )
strtotime
可以传入第二个参数,用来表示参考时间,默认是当前时间,所以strtotime('+1 month');
才会计算出下个月的时间。