0

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

我有这段代码,但它只测试 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";
}
4

4 回答 4

2

一些提示:

  • date('N')为您提供可以测试的标准化工作日(无需使用本地化字符串)
  • 将其全部包装在自定义函数中,您就完成了
于 2017-05-29T14:13:42.377 回答
1

您可以使用较短的代码来检查周末 => 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;
    }
}
于 2017-05-29T14:13:22.137 回答
1

将多个答案合并为一个并提供一些额外的答案,您将得到以下结果:

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;
}
于 2017-05-29T14:25:29.020 回答
0

您可以使用 strtotime(); 和 date() 函数获取日期的日期,然后检查是否是太阳

 function check_if_weekend($date){
    $timestamp = strtotime($date);
    $day = date('D', $timestamp);
    if(in_array($day, array('sun', 'sat'))
       return true;
    else return false;
    }
于 2017-05-29T14:11:48.947 回答