我正在尝试构建一个函数来向特定日期添加(或减少)特定的月数。我将日期作为字符串传递,格式为dd/mm/yyyy
。在下面的函数中,$d
是我传递的日期,例如21/04/2017
和$quant
是我想要增加或减少的月数。
public static function incMonth($d,$quant) {
$d = date_create_from_format('d/m/Y', $d);
$newDate = strtotime ( $quant . ' months' , strtotime ( $d ) ) ;
$result = date('d/m/Y',$newDate);
return $result;
}
我正在调用这个函数:
incMonth('21/04/2017','+1');
但我得到了结果31/01/1970
!我做错了什么?
谢谢!
答案 0 :(得分:0)
日期时间是一个对象,你应该使用它的函数来进行任何数据的复制。
$date = new DateTime('2000-12-31');
$interval = new DateInterval('P1M');
$date->add($interval);
echo $date->format('Y-m-d') . "\n";
所以在你的情况下它将是
public static function incMonth($d,$quant) {
$d = new DateTime($d);
$interval = new DateInterval('P' . $quant.'M');
$newDate = $d->add($interval);
$result = date('d/m/Y',$newDate);
return $result;
}