[php] 날짜가 주말인지 확인 PHP

이 함수는 거짓 만 반환하는 것 같습니다. 당신 중 누구도 똑같이 받고 있습니까? 나는 내가 무언가를 간과하고 있다고 확신하지만, 신선한 눈과 모든 것 …

function isweekend($date){
    $date = strtotime($date);
    $date = date("l", $date);
    $date = strtolower($date);
    echo $date;
    if($date == "saturday" || $date == "sunday") {
        return "true";
    } else {
        return "false";
    }
}

다음을 사용하여 함수를 호출합니다.

$isthisaweekend = isweekend('2011-01-01');



답변

PHP> = 5.1 인 경우 :

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

그렇지 않으면:

function isWeekend($date) {
    $weekDay = date('w', strtotime($date));
    return ($weekDay == 0 || $weekDay == 6);
}


답변

또 다른 방법은 DateTime 클래스 를 사용하는 것입니다 .이 방법으로 시간대를 지정할 수도 있습니다. 참고 : PHP 5.3 이상.

// For the current date
function isTodayWeekend() {
    $currentDate = new DateTime("now", new DateTimeZone("Europe/Amsterdam"));
    return $currentDate->format('N') >= 6;
}

특정 날짜 문자열을 확인할 수 있어야하는 경우 DateTime :: createFromFormat을 사용할 수 있습니다.

function isWeekend($date) {
    $inputDate = DateTime::createFromFormat("d-m-Y", $date, new DateTimeZone("Europe/Amsterdam"));
    return $inputDate->format('N') >= 6;
}

이 방법의 장점은 PHP에서 시간대를 전역 적으로 변경하지 않고 시간대를 지정할 수 있다는 것입니다. 이로 인해 다른 스크립트 (예 : WordPress)에서 부작용이 발생할 수 있습니다.


답변

위의 PHP 5.5 또는 PHP 7을 사용하는 경우 다음을 사용할 수 있습니다.

function isTodayWeekend() {
    return in_array(date("l"), ["Saturday", "Sunday"]);
}

오늘이 주말이면 “true”를 반환하고 그렇지 않으면 “false”를 반환합니다.


답변

여기:

function isweekend($year, $month, $day)
{
    $time = mktime(0, 0, 0, $month, $day, $year);
    $weekday = date('w', $time);
    return ($weekday == 0 || $weekday == 6);
}


답변

코드의 작동 버전 (BoltClock이 지적한 오류에서 발췌) :

<?php
$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";
}

?>

길 잃은 “{“는 특히 괜찮은 PHP 편집기 (제 경우) 없이는보기가 어렵습니다. 그래서 여기에 수정 된 버전을 게시합니다.


답변

저와 같이 미니멀하지 않은 사람들에게는 ” intl ” 이라는 PECL 확장이 있습니다. “idn”확장과 “IntlDateFormatter”와 같은 다른 n1 클래스보다 더 잘 작동하기 때문에 idn 변환에 사용합니다.

제가 말하고 싶은 것은 “intl”확장에는 많은 국제 국가를 처리 할 수있는 “IntlCalendar”라는 클래스가 있습니다 (예 : 사우디 아라비아에서는 일요일이 주말이 아님). IntlCalendar에는 IntlCalendar :: isWeekend 메서드 가 있습니다. 아마 여러분이 한 번 시도해보세요. 저는 이러한 국제 수업에서 “거의 모든 국가에서 작동한다”는 사실이 마음에 듭니다.

편집 : 확실하지는 않지만 PHP 5.5.0부터 intl 확장이 PHP와 함께 번들로 제공됩니다 (–enable-intl).


답변

이것은 나를 위해 작동하며 재사용이 가능합니다.

function isThisDayAWeekend($date) {

    $timestamp = strtotime($date);

    $weekday= date("l", $timestamp );

    if ($weekday =="Saturday" OR $weekday =="Sunday") { return true; }
    else {return false; }

}