我想根据开始日期和结束日期渲染日期,例如:
输入:
我想要的输出:
我的代码:
function period_days($start_date, $int, $end_date){
$begin = new DateTime( $start_date );
$end = new DateTime( $end_date );
$interval = DateInterval::createFromDateString($int);
$period = new DatePeriod($begin, $interval, $end->modify( '+1 day' ));
return $period;
}
echo period_days('30-12-2017', '1 month', '31-03-2018');
结果返回错误(第3个应该是“2018-03-30”):
"2017-12-30 00:00:00"
"2018-01-30 00:00:00"
"2018-03-02 00:00:00"
编辑:解释输入:
开始日期格式可以是'2017年12月31日'或'2018年1月的第一个星期一'或'2017年12月的第三个星期二'或'2017年12月28日'......
时间间隔可以是“1天”,“1个月”,“2个月”,“1年”......
结束日期格式为d-m-Y '01 / 12/2018'
我使用此功能添加计划重复活动,例如插件活动日历,你们可以在https://wpshindig.com/events/community/add上看到示例
答案 0 :(得分:1)
我可以建议你一个解决方法。 由于DatePeriod在2月份中断,我们可以分别获得年份和月份以及附加日期。但这仅适用于一年。 示例:
function periodDays($start_date, $int, $end_date){
$begin = new DateTime($start_date);
$end = new DateTime($end_date);
$startDay = $begin->format("d");
$interval = DateInterval::createFromDateString($int);
$period = new DatePeriod($begin, $interval, $end);
foreach($period as $date){
echo $date->format("Y-m-") .$startDay. "<br>";
}
}