关于这段代码的奇怪行为:
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"
}
而不是预期的...
class DateTime#2 (3) {
public $date =>
string(19) "2016-02-29 15:13:32"
public $timezone_type =>
int(3)
public $timezone =>
string(14) "Africa/Algiers"
}
知道吗?
示例
var_dump((new 'DateTime())->createFromFormat("j-M-Y", "30-Nov-2015")->add(new 'DateInterval('P3M')));
不能认为是"在当月的最后一天加3个月",而是"在当月30日加3个月"。由于 2016 年 2 月有 29 天而不是 28 天,每月第一天后的 30 天是 3 月 1 日。同样,请注意
var_dump((new 'DateTime())->createFromFormat("j-M-Y", "30-Nov-2015")->add(new 'DateInterval('P2M')));
降落在 1 月 30 日而不是 31 日。