簡體   English   中英

在php date中跳過周末

[英]Skip weekends in php date

我有這個代碼:

 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天。 有什么想法如何排除這個嗎?

我想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! 

您可以先為星期一創建一個時間戳,然后添加足夠的秒數以使一天前進五次。

像這樣:

$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
}

更新:

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 />';

}   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM