테스트 사이트 - 개발 중인 베타 버전입니다

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

김무식2 2년 전 조회 1,287

$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 포인트
플래토
2년 전

날짜와 시간은 

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

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

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

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

 

PHP변수로 비교하면

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

 

또다른 방법으로

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

</p>

<p>// db를 이용한 비교 예제</p>

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

<p>$row = sql_fetch($sql);</p>

<p>if ($row['chk']) {</p>

<p>   //참일때  date1이 작을때</p>

<p>}</p>

<p>else {</p>

<p>    // 거짓일때 date1이 작지 않을때</p>

<p>}</p>

<p>

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

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

2년 전

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

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

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

 

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

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

s
sinbi Expert
2년 전

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

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

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

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

로그인