我使用日期函数在 php 中有一个日期
$date = date('Y-m-d');
我需要在下个月添加一定天数以显示截止日期。
例如:如果有人今天添加了一个带有 a 的工作5 days
,2014-08-04
那么截止日期应该是2014-09-06
我打算使用 date 函数获取当前月份,并将值增加 1 以进入下个月,然后在 date 函数中将天数添加到当天。
这看起来很长而且不太对
有人可以告诉我实现这一目标的最佳方法是什么?
PHP 社区有幸内置了如此强大的可用功能核心。解决这个问题的方法不计其数,但最简单的往往是最好的。
strtotime
从版本 4 开始支持。它很快。很明显。它是高度可维护的。不需要任何更复杂的东西。
$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');
只需使用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');