У меня есть 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";
}
Вы можете использовать более короткий код для проверки на выходные => 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;
}
}
Пара подсказок:
date('N')
дает вам нормализованный день недели, с которым вы можете проверить (нет необходимости использовать локализованные строки)Вы можете использовать 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;
}
Объединяя несколько ответов в один и давая немного больше, вы получите следующее:
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;
}