[英]Stepping back in DatePeriod loop
据我了解,我无法通过可变步骤设置foreach循环,因此我使用了如下的for循环:
$beginDate = new DateTime( $firstday );
$endDate = new DateTime( $lastday );
$endDate = $endDate->modify( '+1 day' );
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($beginDate, $interval, $endDate);
$datesArray=array();
foreach($period as $dt) $datesArray[]=$dt->format('Y-m-d');
for ($dateindex=0; $dateindex < count($datesArray); $dateindex++) {
...
有一个更好的方法吗?
是的,使用
$interval = DateInterval::createFromDateString('-1 day');
然后计算出$endDate
和$beginDate
之间的天数差异,并在循环中使用该差异:
$beginDate = new DateTime('2016-11-28');
$endDate = new DateTime('2016-12-07');
$endDate = $endDate->modify( '+1 day' );
$interval = DateInterval::createFromDateString('-1 day');
$diff = $endDate->diff($beginDate);
$period = new DatePeriod($beginDate, $interval, $diff->days);
$datesArray=array();
foreach($period as $dt) $datesArray[]=$dt->format('Y-m-d');
var_dump($datesArray);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.