在php日期中跳过周末

时间:2017-05-19 11:21:05

标签: php

我有这段代码:

 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天。有任何想法如何排除这个?

3 个答案:

答案 0 :(得分: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! 

答案 1 :(得分: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
}

答案 2 :(得分: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 />';

}