检查2给定的日期是周末PHP

问题描述:

我有2个日期这样YYYY-mm-dd,我想检查这两个日期是否是周末。检查2给定的日期是周末PHP

我有这个代码,但它只测试1个日期,我不知道如何适应它...我需要添加一个$ date_end。 感谢您的帮助

$date = '2011-01-01'; 
$timestamp = strtotime($date); 
$weekday= date("l", $timestamp); 
$normalized_weekday = strtolower($weekday); 
echo $normalized_weekday ; 
if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) { 
    echo "true"; 
} else { 
    echo "false"; 
} 
+0

无论如何,这段代码是非常可怕的。你最好推出自己的。 –

+0

你知道你可以创建一个函数来分解代码吗? –

+0

检查此:[链接](https://stackoverflow.com/questions/4802335/checking-if-date-is-weekend-php) –

您可以使用更短的代码来检查周末=>date('N', strtotime($date)) >= 6。 所以,检查2日 - 不仅仅是1 - 使用功能,让您的代码简洁明快:

$date1 = '2011-01-01' ; 
$date2 = '2017-05-26'; 

if (check_if_weekend($date1) && check_if_weekend($date2)) { 
    echo 'yes. both are weekends' ; 

} else if (check_if_weekend($date1) || check_if_weekend($date2)) { 
    echo 'no. only one date is a weekend.' ; 

} else { 
    echo 'no. neither are weekends.' ; 
} 

function check_if_weekend($date) { 
    return (date('N', strtotime($date)) >= 6); 
} 

使用现有的代码,这是稍长,以下是你如何将检查2日期:

$date1 = '2011-01-01' ; 
$date2 = '2017-05-27'; 

if (check_if_weekend_long($date1) && check_if_weekend_long($date2)) { 
    echo 'yes. both are weekends' ; 

} else if (check_if_weekend_long($date1) || check_if_weekend_long($date2)) { 
    echo 'no. only one date is a weekend.' ; 

} else { 
    echo 'no. neither are weekends.' ; 
} 

function check_if_weekend_long($date_str) { 
    $timestamp = strtotime($date_str); 
    $weekday= date("l", $timestamp); 
    $normalized_weekday = strtolower($weekday); 
    //echo $normalized_weekday ; 
    if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) { 
     return true; 
    } else { 
     return false; 
    } 
} 

可以使用的strtotime();和日期()函数来获取日期的当天,然后检查是否坐在阿特斯阳光

function check_if_weekend($date){ 
    $timestamp = strtotime($date); 
    $day = date('D', $timestamp); 
    if(in_array($day, array('sun', 'sat')) 
     return true; 
    else return false; 
    } 
+0

谢谢做它也检查是否是明天的星期日? – Pipoo

一对夫妇的提示:

  • date('N')为您提供了标准化的星期几,你可以测试对(无需使用本地化的字符串)
  • 总结这一切在一个custom function就大功告成了
+0

'return in_array(date('N',strtotime($ date)),[6,7,]);' – DarkBee

+0

也可以与'date('w')'一起使用,但请记住''w''是0索引而不是1索引,就像'N'是 – Jelmergu

合并多个答案为一体,并给予一些额外的,你会得出如下:

function isWeekend($date) { 
    return (new DateTime($date))->format("N") > 5 ? true : false; 
} 

还是很长的路要走:

function isWeekend($date) { 
    if ((new DateTime($date))->format("N") > 5) { 
     return true; 
    } 
    return false; 
}