2014-10-03 60 views
1

我想为我的网络创建调度。我怎样才能得到每周2天的时间表。例如:每周显示星期一和星期五。这是我的代码:Foreach两个DatePeriod对象

$day_of_week = "Monday"; 
$step = 1; 
$unit = 'W'; 
$start = new DateTime(""); 
$end = clone $start; 
$start->modify($day_of_week); // Move to first occurrence 
$end->add(new DateInterval('P7W')); // Move to 1 year from start 
$interval = new DateInterval("P{$step}{$unit}"); 
$period = new DatePeriod($start, $interval, $end); 
foreach ($period as $date) { 
    echo '<tr>'; 
    echo '<td><a href="lihatAbsen.php?tanggal='.$date->format('d-m-Y').'&id='.$id_kuliah.'">'.$date->format('d M Y').'</td>'; 
} 

$day_of_week2 = "Friday"; 
$start->modify($day_of_week2); // Move to first occurence 
$period2 = new DatePeriod($start, $interval, $end); 
foreach ($period2 as $date) { 
    echo '<td><a href="lihatAbsen.php?tanggal='.$date->format('d-m-Y').'&id='.$id_kuliah.'">'.$date->format('d M Y').'</td></tr>'; 
} 

它的工作,但我想打印在同一行<tr></tr>$period对象$period2对象。如何做正确的循环?或者如何获得2天/周的输入天数?

+0

您使用的是哪个版本的PHP?哦,+1使用克隆和DateInterval和DatePeriod。 – 2014-10-03 18:11:50

回答

0

只需克隆您当前$date对象,并将其移动到下周五。

$day_of_week = "Monday"; 
$step = 1; 
$unit = 'W'; 
$start = new DateTime(""); 
$end = clone $start; 
$start->modify($day_of_week); 
$end->add(new DateInterval('P7W')); 
$interval = new DateInterval("P{$step}{$unit}"); 
$period = new DatePeriod($start, $interval, $end); 
foreach ($period as $date) { 
    echo '<tr>'; 
    echo '<td><a href="lihatAbsen.php?tanggal='.$date->format('d-m-Y').'&id='.$id_kuliah.'">'.$date->format('d M Y').'</td>'; 

    $friday = clone $date; 
    $friday->modify('next Friday'); 
    echo '<td><a href="lihatAbsen.php?tanggal='.$friday->format('d-m-Y').'&id='.$id_kuliah.'">'.$friday->format('d M Y').'</td></tr>'; 
} 
+0

这就是我所需要的:D非常感谢John:D – SuSu 2014-10-03 18:42:09

0

你可以操纵的第一次约会在它的循环,并把它添加到输出的文本字符串

$monday=$date->format('d-m-Y'); 
$friday= date("d-m-Y",strtotime("$monday +4 days")); 
+0

使用date()和strtotime混合DateTime()?呸。 – 2014-10-03 18:01:22

+0

好的建设性的批评。像你这样的人使这个网站这样一种享受。 – 2014-10-03 18:47:19