我使用日期函数
在php中有一个日期$date = date('Y-m-d');
我需要在下个月添加一定天数以显示截止日期。
例如:如果某人今天使用5 days
,2014-08-04
添加了作业,则截止日期应为2014-09-06
我计划使用日期函数获取当前月份,并将值增加1以转到下个月,然后在日期函数中添加当天的天数。
这看起来很冗长而且没那么正确
有人能告诉我实现这个目标的最佳途径是什么?
答案 0 :(得分:1)
只需使用DateTime()
:
$date = (new DateTime('2014-08-04'))->modify('next month')->modify('+5 days')->format('Y-m-d');
或DateInterval()
:
$date = (new DateTime('2014-08-04'))->modify('next month')->add(new DateInterval('P5D'))->format('Y-m-d');
或者,或许更适合您的需求:
$days = 5;
$date = (new DateTime())->modify('next month')->modify("{$days} days")->format('Y-m-d');
以上两者都需要PHP 5.4+。如果您需要将其转换为PHP 5.3,请告诉我。
以上代码的PHP 5.3版本:
$days = 5;
$date = new DateTime();
$date->modify("next month");
$date->modify("{$days} days");
$date = $date->format('Y-m-d');
答案 1 :(得分:0)
PHP社区很幸运能够拥有如此强大的可用功能核心。有无数种方法可以解决这个问题,但最简单的方法通常是最好的。
自版本4以来, strtotime
已得到支持。速度很快。很明显。它是高度可维护的。没有必要再复杂了。
$future_stamp = strtotime('+ 1 month 5 days');
$date = date('Y-m-d', $future_stamp);
修改强>
经过多次阅读和猜测,这可能是你真正想要的。此外,有必要阅读strtotime
文档。你可以想出这个。
$future_stamp = strtotime(date('Y-m-d', strtotime('first day of next month')) . ' + 5 days');