Проверьте, являются ли 2 данные даты выходными, используя переполнение стека

У меня есть 2 даты, подобные этой ГГГГ-мм-дд, и я хотел бы проверить, являются ли эти 2 даты выходными.

У меня есть этот код, но он проверяет только 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

Решение

Вы можете использовать более короткий код для проверки на выходные => 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;
}
}
0

Другие решения

Пара подсказок:

  • date('N') дает вам нормализованный день недели, с которым вы можете проверить (нет необходимости использовать локализованные строки)
  • Оберните все это в пользовательская функция и вы сделали
2

Вы можете использовать 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;
}
0

Объединяя несколько ответов в один и давая немного больше, вы получите следующее:

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;
}
0
По вопросам рекламы [email protected]