2014-10-03 104 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