2026, 새로운 도약을 시작합니다.

php datetime 포맷 스트링 변수 비교 질문 채택완료

$date1 = "2023-03-20";

$date2 = "2023-03-21";

if($date1 < $date2){

echo "\$date2 가 큼";

}

else{

echo "\$date2 가 작음";

}

이렇게 해도 동작하네요

ymb his 포맷으로 비교해도 동작확인되고요

꼭 strtotime()함수를 써써 타임스탬프로 바꾸어 비교해야 하나요?

챗 gpt는 무조건 strtotime()함수 나 date 오브젝트로 바꾸어야 비교된다고 해서 헷갈리네요

php 내부적으로 스트링변수도 date 나 time 포맷이면 알아서 변환해서 비교해주는 건가요?

답변 3개

채택된 답변
+20 포인트

날짜와 시간은 

숫자로나열해도 실제로 미래일자가 과거일자보다 크기때문에

단순비교(문자열비교)를 해도 

문자열자체가 Unicode 등에서도 더 큰자리에 할당되어 비교가 가능합니다

그런데, 중간에 특수문자가 오작동할수도있는것이라 안심할수는 없습니다.

PHP변수로 비교하면

시간으로 변경되서 더 정확한 비교가 가능한게 맞습니다.

또다른 방법으로

DB의 시간비교를 활용하는 방법도있습니다.

Copy


// db를 이용한 비교 예제

$sql = "select if(date({$date1})  date({$date2}), 1, 0)  chk ";

$row = sql_fetch($sql);

if ($row['chk']) {

   //참일때  date1이 작을때

}

else {

    // 거짓일때 date1이 작지 않을때

}

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

인간이 보기엔 시간이지만 php입장에서는 문자열일 뿐입니다

따라서 문자열비교는 사전순서로 비교가 됩니다

형식이 동일한 시간 비교는 strtotime같은 시간변환 필요없이 문자열 비교만으로 충분합니다

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

크기 비교는 숫자여야 하는데, 위 코드는 문자열이니 당연한 거 아닐련지....

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고