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같은 시간변환 필요없이 문자열 비교만으로 충분합니다

 

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

회원로그인

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