我有一个具有以下属性的事件:
id
name
weekday
因此,工作日每周都会发生一次事件。我想创建一个包含所有日期的数组(格式:dd-mm-yyyy),当该事件发生两个特定日期时。
我无法找出合适的逻辑/代码。
我实现了以下代码:
$day = date('d');//returns today's date in 2-digit format.
$year = date('Y');//4-digit format of current year
$month = date('m');//2-digit format of current month
$cal = array();
$ttdayid = $weekday;//5
$tt = 0;
$tt = abs($day-$ttdayid);
$ttday = $date - $tt;
while ($ttday>0) {
if ($ttday<10) {
$ttday = '0' . $ttday;
}
$arr = array(
'id' => $id,
'title' => $name,
'start' => $year . '-' . $month . '-' . $ttday
);
array_push($cal, $arr);
$ttday-= 7;
}
上述代码仅适用于当前月份。我无法弄清楚如何扩展它以显示全年前一个月和下个月的日期。此外,如何包括闰年的案例。
答案 0 :(得分:0)
使用DateTime()
对象:
$current = new DateTime(); // creates a date for "today" by default
$end = new DateTime('yyyy-mm-dd'); // the ending date
$interval = new DateInterval('P7D'); // 1 week
while($current <= $end) {
$cal[] = $current->format('Y-m-d');
$current = $current->add($interval);
}