在PHP中添加三个月的日期

use*_*331 74 php date strtotime

我有一个名为$effectiveDate包含日期2012-03-26的变量.

我试图在这个日期增加三个月并且没有成功.

这是我尝试过的:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));
Run Code Online (Sandbox Code Playgroud)

$effectiveDate = strtotime(date("Y-m-d", strtotime($effectiveDate)) . "+3 months");
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?两段代码都没有用.

Tch*_*upi 164

将其更改为将为您提供预期的格式:

$effectiveDate = date('Y-m-d', strtotime("+3 months", strtotime($effectiveDate)));
Run Code Online (Sandbox Code Playgroud)

  • `$ offset = 5; 回音日期('Ym-d',strtotime("+ $ offset months",strtotime('2000-01-01')));`[演示](http://ideone.com/H8k7lt) (3认同)
  • 这不适用于这样的日期:date('2018-01-31', strtotime('+ 3 month'))。如果日期以 31 结束并且接下来的 3 个月不是,则不会返回正确的日期。 (2认同)
  • 不好的解决方案-无法返回正确的值-如Dan H所述 (2认同)

Nic*_*ick 5

我假设"没有工作"你的意思是它给你一个时间戳而不是格式化日期,因为你正确地做到了:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); // returns timestamp
echo date('Y-m-d',$effectiveDate); // formatted version
Run Code Online (Sandbox Code Playgroud)


Sad*_*dee 5

这个答案不完全是这个问题。但我将添加此内容,因为此问题仍可搜索到如何从日期开始添加/减去期间。

$date = new DateTime('now');
$date->modify('+3 month'); // or you can use '-90 day' for deduct
$date = $date->format('Y-m-d h:i:s');
echo $date;
Run Code Online (Sandbox Code Playgroud)