【发布时间】:2018-12-14 08:44:35
【问题描述】:
我有一个循环将给定日期添加一周,如下所示,
$db_date = '201849';
$year = substr($db_date, 0, 4);
$week = substr($db_date, 4);
$dateFromStr = new DateTime();
$dateFromStr->setISODate($year, $week);
if($dateFromStr){
for($b=0; $b < 27; $b++){
$calc_date = clone $dateFromStr;
$calc_date->add(new DateInterval("P" . $b . "W"));
$header_week = $calc_date->format("YW");
}
}
输出:
201849,201850,201851,201852,201801,201902,201903,....,201923
但正确的输出是:
201849,201850,201851,201852,201901,201902,201903,....,201923
我不知道为什么我得到201801 而不是201901 作为输出。
请帮我解决这个问题,谢谢。
【问题讨论】:
-
注意:
if ($dateFromStr)不是必需的,因为new DateTime要么返回一个对象(始终为真),要么发出异常。如果您使用DateTimeImmutable类或基于DatePeriod的脚本,也可以省略克隆。