【发布时间】:2013-06-23 15:17:21
【问题描述】:
我正在尝试什么
我正在使用 PHP 制作一个事件管理系统。在这种情况下,该事件可能会重复几天。在事件重复的情况下,数组将包含重复的结束日期,即;事件应重复的结束日期。
array[] = array([0]=>array(
[name]=>test1
[start]=>2013-06-23 11:00
[end]=>2013-06-23 13:00
[repeat]=>true
[repeat-end]=>2013-06-25)
[1]=>array(
[name]=>test2
[start]=>2013-06-21 14:00
[end]=>2013-06-21 16:00
[repeat]=>false))
我需要什么
如果事件重复,则数组必须填充所有数据,直到重复结束日期和相应的开始和结束。 在上述情况下,事件持续时间显示为 start 和 end,重复结束日期显示为 repeat-end。在此数组应填充如下所示:
array[] = array([0]=>array(
[name]=>test1
[start]=>2013-06-23 11:00
[end]=>2013-06-23 13:00
[repeat]=>true
[repeat-end]=>2013-06-25)
[1]=>array(
[name]=>test2
[start]=>2013-06-21 14:00
[end]=>2013-06-21 16:00
[repeat]=>false
[2]=>array(
[name]=>test1
[start]=>2013-06-24 11:00
[end]=>2013-06-24 13:00
[repeat]=>true
[repeat-end]=>2013-06-25)
[3]=>array(
[name]=>test1
[start]=>2013-06-25 11:00
[end]=>2013-06-25 13:00
[repeat]=>true
[repeat-end]=>2013-06-25)
))
我尝试了什么
我在这里尝试使用 php DatePeriod 功能
foreach ($array as $result){
if($result['repeat == true']){
$period = new DatePeriod(
new DateTime($result['start']),
new DateInterval('P1D'),
new DateTime($result['repeat-end']), DatePeriod::EXCLUDE_START_DATE);
$period = iterator_to_array($period);
}
}
使用这个开始和重复结束之间的所有日期,其中 obtianed 和我将每个日期的值插入到数组中。但是我无法获得数组中的最后一个开始日期,当开始日期和结束日期[不重复结束]不同时,结束日期变得复杂。
【问题讨论】:
-
逻辑表明你想要一个读起来像
while(currentDate <= repeatEnd) { addRepeatEvent; increaseCurrentDateByOne; }的循环。你有没有尝试过? -
@Jon:我尝试使用 DatePeriod 功能,但是当事件的开始日期和结束日期不同时,它会不好。
-
@Jon:我也无法使用 php DatePeriod 功能返回最后一个日期的值