2013-02-02 5 views
0

두 날짜를 숫자와 같은 문자열로 비교할 수 있습니까? 또는 int로 다시 입력해야합니까?두 날짜를 문자열 형식으로 비교하십시오.

이 코드가 맞습니까?

<?php 
$date1 = "20130102"; 
$date2 = "20151012"; 

if ($date1 < $date2){ 
    echo "date1 < date2"; 
} elseif ($date1 > $date2){ 
    echo "date1 > date2"; 
} else { 
    echo "date1 = date2"; 
} 
?> 
+0

을 참조하십시오. 물론 안전 할 수도 있지만 * 올바른 결과를주지는 않습니다. 문자열을 비교하는 것만으로도 'strtotime'을 살펴보십시오. – h2ooooooo

+0

사실, 날짜가 표시된 형식으로되어있는 한 올바른 결과를 제공합니다. 그러나'strtotime'에 동의하고 더 많은 객체 지향'DateTime' 클래스를 확인하십시오 : http://www.php.net/manual/en/class.datetime.php – leftclickben

+1

여러분의 가치만큼 올바른 결과를 줄 것입니다 yyyymmdd 순서입니다. –

답변

3

코드는 다음과 같은 조건에서 안전하고 올바른 : 날짜는 Ymd 일수와 같은 형식이 IFF이 작품

이유는 모든 캐릭터에 내가 상상할 수있는 설정한다는 것입니다 (PHP의 date function에 따라) 문자 0-9는 정확하게 숫자 0-9와 같습니다. 그런 다음 선행 0을 사용하면 문자열이 숫자처럼 정렬됩니다.

N.B. 날짜에 대한 데이터 유형으로 문자열을 사용하는 것은 코드 냄새입니다. this page (no.7)

+0

예, 두 날짜는 항상 YYYYMMDD 형식입니다. – teo

+0

@ user1640032 내가 너라면, 테스트하기 전에 그 사실을 확인해 줄 것이다. – lonesomeday

+0

@lonesomeday이 경우 어떻게하면 될까요? 20130104와 20130301? – meze

관련 문제