Program Tip

날짜가 주말인지 확인 PHP

programtip 2020. 10. 8. 18:53
반응형

날짜가 주말인지 확인 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)에서 부작용이 발생할 수 있습니다.


여기:

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";
}

?>

The stray "{" is difficult to see, especially without a decent PHP editor (in my case). So I post the corrected version here.


If you're using PHP 5.5 or PHP 7 above, you may want to use:

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

and it will return "true" if today is weekend and "false" if not.


For guys like me, who aren't minimalistic, there is a PECL extension called "intl". I use it for idn conversion since it works way better than the "idn" extension and some other n1 classes like "IntlDateFormatter".

Well, what I want to say is, the "intl" extension has a class called "IntlCalendar" which can handle many international countries (e.g. in Saudi Arabia, sunday is not a weekend day). The IntlCalendar has a method IntlCalendar::isWeekend for that. Maybe you guys give it a shot, I like that "it works for almost every country" fact on these intl-classes.

EDIT: Not quite sure but since PHP 5.5.0, the intl extension is bundled with PHP (--enable-intl).


This works for me and is reusable.

function isThisDayAWeekend($date) {

    $timestamp = strtotime($date);

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

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

}

참고URL : https://stackoverflow.com/questions/4802335/checking-if-date-is-weekend-php

반응형