我正在尝试使用php datetime对象(使用代码)将2018年1月6日的年月日延长至一天
function getMonths(){
$st_date = new DateTime('2019-01-01');
$yms = array($st_date);
while($st_date < new DateTime()){
array_push($yms, $st_date->add(new DateInterval('P1M')));
}
print_r($yms);
}
但是输出在$ yms数组中的所有项目上显示相同的值
Array
(
[0] => DateTime Object
(
[date] => 2019-03-01 00:00:00
[timezone_type] => 3
[timezone] => Asia/Kolkata
)
[1] => DateTime Object
(
[date] => 2019-03-01 00:00:00
[timezone_type] => 3
[timezone] => Asia/Kolkata
)
....
)
答案 0 :(得分:2)
您将对同一对象的引用推入数组。结果,所有项目都显示相同的时间。使用克隆根据源对象数据创建新对象
function getMonths(){
$st_date = new DateTime('2019-01-01');
$yms = array(clone $st_date);
while($st_date < new DateTime()){
array_push($yms, clone $st_date->add(new DateInterval('P1M')));
}
print_r($yms);
}