채택완료
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이 작지 않을때
}
답변을 작성하려면 로그인이 필요합니다.