Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 두 날짜 비교하기 – 비교 연산자부터 DateTime 클래스까지

PHP에서 두 날짜를 비교하는 작업은 의외로 간단합니다. 특히 "YYYY-MM-DD"처럼 표준화된 형식의 날짜 문자열은 사전순(lexicographic) 비교 결과가 실제 시간 순서와 일치하기 때문에, 별도의 변환 과정 없이 기본 비교 연산자만으로도 정확하게 비교할 수 있습니다.

아래 예제들을 통해 동등 연산자(==)와 부등호 연산자를 활용한 날짜 비교 방법을 살펴보겠습니다.

예제 1: 동등 연산자로 두 날짜가 같은지 확인하기

다음 코드는 동등 연산자를 사용하여 두 날짜가 서로 같은지 판단합니다.

<?php
    $dateOne = "2019-10-30";
    $dateTwo = "2019-10-30";
    echo "날짜1 = $dateOne";
    echo "\n날짜2 = $dateTwo";
    if ($dateOne == $dateTwo)
        echo "\n두 날짜는 같습니다!";
    else
        echo "두 날짜는 다릅니다!";
?>

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

날짜1 = 2019-10-30
날짜2 = 2019-10-30
두 날짜는 같습니다!

예제 2: 부등호 연산자로 어느 날짜가 더 최신인지 확인하기

두 날짜가 서로 다른 경우에는 비교 연산자를 사용해 어느 쪽이 더 나중 날짜인지 확인할 수 있습니다.

<?php
    $dateOne = "2019-11-08";
    $dateTwo = "2018-08-10";
    echo "날짜1 = $dateOne";
    echo "\n날짜2 = $dateTwo";
    if ($dateOne < $dateTwo)
        echo "\n두 번째 날짜가 더 최신입니다!";
    else
        echo "\n첫 번째 날짜가 더 최신입니다!";
?>

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

날짜1 = 2019-11-08
날짜2 = 2018-08-10
첫 번째 날짜가 더 최신입니다!

참고: 더 견고한 날짜 비교 방법

날짜 형식이 "YYYY-MM-DD"가 아니거나 시간 정보가 함께 포함된 경우에는 문자열 직접 비교 대신 strtotime() 함수나 DateTime 클래스를 사용하는 것이 안전합니다.

strtotime() 활용 예시

<?php
    $tsOne = strtotime("2019-11-08");
    $tsTwo = strtotime("2018-08-10");

    if ($tsOne > $tsTwo)
        echo "첫 번째 날짜가 더 최신입니다!";
?>

DateTime 클래스 활용 예시

<?php
    $dateOne = new DateTime("2019-11-08");
    $dateTwo = new DateTime("2018-08-10");

    var_dump($dateOne > $dateTwo); // bool(true) : 첫 번째 날짜가 더 최신
?>

DateTime 객체 역시 비교 연산자를 직접 지원하므로, 시간대(timezone) 처리나 복잡한 날짜 계산이 필요한 프로젝트에서는 이 방식이 가장 권장됩니다.