Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 向日期添加月份时出现意外结果_Php_Date - Fatal编程技术网

Php 向日期添加月份时出现意外结果

Php 向日期添加月份时出现意外结果,php,date,Php,Date,我需要在某个日期后加上3个月,直到超过某个日期: $next_dt = date('Y-m-d H:i:s', strtotime('2015-12-31 00:00:00')); while($next_dt <= '2016-11-07 00:00:00'){ $next_dt = date('Y-m-d H:i:s', strtotime("+3 months",strtotime($next_dt))); } 但我无法提前知道我需要增加多少个

我需要在某个日期后加上3个月,直到超过某个日期:

  $next_dt = date('Y-m-d H:i:s', strtotime('2015-12-31 00:00:00'));
  while($next_dt <= '2016-11-07 00:00:00'){
       $next_dt = date('Y-m-d H:i:s', strtotime("+3 months",strtotime($next_dt)));      
  }
但我无法提前知道我需要增加多少个月

我该怎么办?

使用strotime()和“+1个月”很麻烦,因为它不能完全按照预期工作

更简单地说,strotime(“+1个月”,…)似乎只增加了30天,而不考虑月份。对于某些月份来说,这是一个问题,因为并非所有月份都有30天

我不会用“+1个月”来做这件事,我以前做的是每个月一个接一个地检查,只得到一个月的最后一天,再加上一天。这可能不是最优雅的解决方案,但它更安全。

使用strotime()和“+1个月”很麻烦,因为它不能完全按照预期工作

更简单地说,strotime(“+1个月”,…)似乎只增加了30天,而不考虑月份。对于某些月份来说,这是一个问题,因为并非所有月份都有30天

我不会用“+1个月”来做这件事,我以前做的是每个月一个接一个地检查,只得到一个月的最后一天,再加上一天。这可能不是最优雅的解决方案,但更安全

$orig_dt = date('Y-m-d H:i:s', strtotime('2015-12-31 00:00:00'));
$next_dt = date('Y-m-d H:i:s', strtotime("+12 months", strtotime($orig_dt)));