php datetime 포맷 스트링 변수 비교 질문

php datetime 포맷 스트링 변수 비교 질문

QA

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

날짜와 시간은 

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

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

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

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

 

PHP변수로 비교하면

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

 

또다른 방법으로

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


// db를 이용한 비교 예제
$sql = "select if(date({$date1}) < date({$date2}), 1, 0)  chk ";
$row = sql_fetch($sql);
if ($row['chk']) {
   //참일때  date1이 작을때
}
else {
    // 거짓일때 date1이 작지 않을때
}

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

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

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

 

답변을 작성하시기 전에 로그인 해주세요.
전체 59,609
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT