php日期函数和计算一周中的天数,以确保跳过周末

php日期函数和计算一周中的天数,以确保跳过周末,php,sql,Php,Sql,我昨天设置了这个旋转日历,我想我可能会遇到问题,今天果然出现了我预期的问题。日子一变日期就变了。它没有像昨天那样跳过周末,而是显示了周六而不是周一。它只假设显示周一到周五和+3,然后返回到周一到周五。示例代码: echo "Today"; echo date('m/d'); echo "<br>"; echo substr(date('l/m/d', strtotime('+1 day')), 0, 2). date('m/d', strtotime('+1 day')); ec

我昨天设置了这个旋转日历,我想我可能会遇到问题,今天果然出现了我预期的问题。日子一变日期就变了。它没有像昨天那样跳过周末,而是显示了周六而不是周一。它只假设显示周一到周五和+3,然后返回到周一到周五。示例代码:

echo "Today";
echo date('m/d'); 
echo "<br>";
echo substr(date('l/m/d', strtotime('+1 day')), 0, 2). date('m/d', strtotime('+1 day')); 
echo "<br>";
echo substr(date('l/m/d', strtotime('+2 day')), 0, 1). date('m/d', strtotime('+2 day'));
echo "<br>";
echo substr(date('l/m/d', strtotime('+5 day')), 0, 1). date('m/d', strtotime('+5 day'));
echo "<br>";
echo substr(date('l/m/d', strtotime('+6 day')), 0, 1). date('m/d', strtotime('+6 day'));
echo "<br>";
echo substr(date('l/m/d', strtotime('+7 day')), 0, 1). date('m/d', strtotime('+7 day'));
echo "<br>";
echo substr(date('l/m/d', strtotime('+8 day')), 0, 2). date('m/d', strtotime('+8 day'));
echo "<br>";
echo substr(date('l/m/d', strtotime('+9 day')), 0, 1). date('m/d', strtotime('+9 day'));
echo "<br>";
echo substr(date('l/m/d', strtotime('+12 day')), 0, 1). date('m/d', strtotime('+12 day'));
echo "<br>";
echo substr(date('l/m/d', strtotime('+13 day')), 0, 1). date('m/d', strtotime('+13 day'));
echo“今日”;
回音日期(“m/d”);
回声“
”; echo substr(日期('l/m/d',标准时间('+1天')),0,2)。日期('m/d',标准时间('+1天'); 回声“
”; 回显子序列(日期('l/m/d',标准时间('+2天')),0,1)。日期('m/d',标准时间('+2天'); 回声“
”; 回显子序列(日期('l/m/d',标准时间('+5天')),0,1)。日期('m/d',标准时间('+5天'); 回声“
”; 回显子序列(日期('l/m/d',标准时间('+6天')),0,1)。日期('m/d',标准时间('+6天'); 回声“
”; echo substr(日期('l/m/d',标准时间('+7天')),0,1)。日期('m/d',标准时间('+7天'); 回声“
”; echo substr(日期('l/m/d',标准时间('+8天')),0,2)。日期('m/d',标准时间('+8天'); 回声“
”; 回显子序列(日期('l/m/d',标准时间('+9天')),0,1)。日期('m/d',标准时间('+9天'); 回声“
”; 回显子序列(日期('l/m/d',标准时间('+12天')),0,1)。日期('m/d',标准时间('+12天'); 回声“
”; echo substr(日期('l/m/d',标准时间('+13天')),0,1)。日期('m/d',标准时间('+13天');
显然,mode没有完成工作,我如何确保总是跳过周末

此外,我将其浓缩到一个sql查询中,如下所示:(实际代码)

sum(case when cast(a.follow_up as date)=cast(GETDATE()as date)然后1 else 0 end)'Today
“.date('m/d')”, 求和(DATEDIFF(dd,cast(GETDATE()作为日期),cast(a.follow_up作为日期))='1'然后1,否则0结束)“.substr(日期('l/m/d',strotime('+1天')),0,2)。“
”.date('m/d',strotime('+1天')。”, 求和(DATEDIFF(dd,cast(GETDATE()作为日期),cast(a.follow_up作为日期))='2'然后1,否则0结束)“.substr(日期('l/m/d',strottime('+2天')),0,1)。“
”.date('m/d',strottime('+2天')。”, 求和(DATEDIFF(dd,cast(GETDATE()作为日期),cast(a.follow_up as date))='3'然后1,否则0结束)“.substr(日期('l/m/d',标准时间('+5天')),0,1)。“
”.date('m/d',标准时间('+5天')。”, 求和(DATEDIFF(dd,cast(GETDATE()作为日期),cast(a.follow_up作为日期))='4'然后1,否则0结束)“.substr(日期('l/m/d',strottime('+6天')),0,1)。“
”.date('m/d',strottime('+6天')。”, 求和(DATEDIFF(dd,cast(GETDATE()作为日期),cast(a.follow_up as date))='5'然后1,否则0结束)“.substr(date('l/m/d',strottime('+7天')),0,1)。“
”.date('m/d',strottime('+7天')。”, 求和(DATEDIFF(dd,cast(GETDATE()作为日期),cast(a.follow_up as date))='6'然后1,否则0结束)“.substr(日期('l/m/d',标准时间('+8天')),0,2)。“
”.date('m/d',标准时间('+8天')。”, 求和(DATEDIFF(dd,cast(GETDATE()作为日期),cast(a.follow_up作为日期))='7'然后1,否则0结束)“.substr(日期('l/m/d',strottime('+9天')),0,1)。“
”.date('m/d',strottime('+9天')。”, 求和(DATEDIFF(dd,cast(GETDATE()作为日期),cast(a.follow_up作为日期))='8'然后1,否则0结束)“.substr(日期('l/m/d',strottime('+12天')),0,1)。“
”.date('m/d',strottime('+12天')。”, 求和(DATEDIFF(dd,cast(GETDATE()为日期),cast(a.follow_up为日期))='9'然后1,否则0结束)“.substr(日期('l/m/d',标准时间('+13天')),0,1”。
”.date('m/d',标准时间('+13天')。“,
date('N')将以1-Monday到7-Sunday的格式给出一周中的某一天
所以,如果我们减去1得到0-6,然后用它回到前几天,它会带我们回到上周一

ie星期一=1,1-1=0,-0天是星期一
星期二=2,2-1=1,-1天是星期一
..
星期五=5,5-1=4-4天是星期一

$lastmonday=strtotime("-".(date("N")-1)." days");
for($loop=0;$loop<14;$loop++)
{
    $theday=strtotime("+".$loop." days", $lastmonday);
    if(date("N", $theday)>5)
    {
       echo 'weekend';
    }
    else
    {
        echo date('D m/d'); 
    }
    echo "<br>";
}
$lastmanday=strottime(“-”(日期(“N”)-1)。“天”);
对于($loop=0;$loop5)
{
回声“周末”;
}
其他的
{
回音日期('D m/D');
}
回声“
”; }
标准时间(“-”(日期(“N”)-1)。“天”)
将带您返回到星期一,然后使用
strotime(“+1天,$lastmanday”)您可以使用
日期(“付款交单”)与其切碎“l/m/d”这可能是我在寻找的答案waygood,我将尝试一下。谢谢。或者使用循环1-14,日期(“N”)不大于5 ie 6-Satuday 7-SundayI必须查看“N”做了什么,ISO-8601数字表示一周中的某一天(在PHP 5.1.0中添加)。
$lastmonday=strtotime("-".(date("N")-1)." days");
for($loop=0;$loop<14;$loop++)
{
    $theday=strtotime("+".$loop." days", $lastmonday);
    if(date("N", $theday)>5)
    {
       echo 'weekend';
    }
    else
    {
        echo date('D m/d'); 
    }
    echo "<br>";
}