php /添加月份到DateTime返回错误的日期

时间:2016-01-23 14:17:22

标签: php datetime

关于此代码的奇怪行为:

std::string

将返回

var_dump((new \DateTime())->createFromFormat("j-M-Y", "30-Nov-2015")->add(new \DateInterval('P3M')));

而不是预期......

class DateTime#2 (3) {
  public $date =>
  string(19) "2016-03-01 15:13:32"
  public $timezone_type =>
  int(3)
  public $timezone =>
  string(14) "Africa/Algiers"
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

示例

var_dump((new \DateTime())->createFromFormat("j-M-Y", "30-Nov-2015")->add(new \DateInterval('P3M')));

不能被视为"在该月的最后一天添加3个月",而是#34;在该月的第30天添加3个月"。自2016年2月起,有29天而不是28天,这个月的第一天是3月1日之后的30天。同样,请注意

var_dump((new \DateTime())->createFromFormat("j-M-Y", "30-Nov-2015")->add(new \DateInterval('P2M')));

在1月30日而不是31日登陆。