2017-05-19 171 views
1

我有這樣的代碼:跳過週末

for ($i = 2; $i > -3; $i--) 
    { 
     $class=""; 

     if(date('D d-m')==date('D d-m', strtotime($i . ' days ago'))) 
     { 
      $class=' class="distinct"'; 
     } 

     echo '<li'.$class.'>'.date('D d-m', strtotime($i . ' days ago')) . '</li>'.'<br />'; 

    } 

,並將其輸出這樣的:

Wed 17-05 

Thu 18-05 

Fri 19-05 

Sat 20-05 

Sun 21-05 

我想知道我怎麼可以跳過週末,所以它只能顯示5天星期一-星期五。任何想法如何排除這一點?

+0

所以,你希望它輸出的電流工作日?如果是週末呢? – Jerodev

+0

如果它的週末不輸出它。所以它會一直只顯示星期一到星期五。並且當天必須像現在一樣,在列表中間。 @Jerodev –

+0

所以你想在現在的一天和兩天之前的兩天後輸出。 例如如果現在是週五,輸出必須是: -Wed -Thu -Mon -Tue 我說得對不對? –

回答

1

您可以通過創建週一時間戳和增加足夠秒提前一天五次啓動。

像這樣:

$monday = strtotime('last monday'); 
for ($i = 0; $i < 5; $i++) 
{ 
    echo date('D d-m', $monday) . '<br />'; 
    $monday = $monday + (60 * 60 * 24); // Add a day 
} 
+0

有效,但我希望當天在中間 –

+1

不可能在一週內列出五個非週末的日子,並將當天始終放在中間。這隻在週三纔有可能...... – Jerodev

1

我的東西getDate()正是你所需要的。您可以使用'wday'來檢查一週中的哪一天(從0到星期天到6到星期六)。例如:

for ($i = 2; $i > -3; $i--) 
{ 
    $date = getDate(strtotime($i . ' days ago')); 
    if($date['wday'] == 6 || $date['wday'] == 0) { 
     echo "Weekend!\n"; 
    } 
    else { 
     echo "Regular day...\n"; 
    } 
} 

,並將其輸出:

Regular day...                                                         
Regular day...                                                         
Regular day...                                                         
Weekend!                                                          
Weekend! 
0

更新:

for($i = -2; $i <= 2; $i++) 
{ 
    echo date ('D d-m' , strtotime ("$i weekdays")) . '<br>'; 
} 

將輸出:

Wed 17-05 
Thu 18-05 
Fri 19-05 
Mon 22-05 
Tue 23-05 

=========== ========================

老答案:

$thisMonday = date("d-M-Y", strtotime('monday this week')); 

for ($i = 0; $i <= 4; $i++) 
{ 
    $class=""; 

    $date = date('d-M-Y', strtotime("+$i days", strtotime($thisMonday))); 

    if(date('D d-m') == date('D d-m', strtotime($i . ' days ago'))) 
    { 
     $class=' class="distinct"'; 
    } 

    echo '<li'.$class.'>'. date('D d-m', strtotime($date)) . '</li>'.'<br />'; 

} 
+0

工作,但我想當天在中間 –

+0

@ Kevin.a好的...我已經更新了我的答案 – devofash

+0

爲什麼downvote? – devofash