2012-06-08 3 views
5

European format (dd/mm/yyyy)에 날짜를 표시하려고하는데 strtotime으로 표시되지만 항상 1970 년 1 월 1 일을 반환합니다. 여기 PHP : strtotime()은 항상 1970 년 1 월 1 일을 반환합니다.

내 코드 라인이다 : 내 데이터베이스에서

echo "<p><h6>".date('d/m/Y', strtotime($row['DMT_DATE_DOCUMENT']))."</h6></p>"; 

필드는 VARCHAR이고 기록은

내가 다른 필드에 동일한 코드 라인을 사용 YYYY.MM.DD 같은 형식의되는 yyyy-mm-dd (varchar도)처럼 형식화되어 있으며 정상적으로 작동합니다.

도움 주셔서 감사합니다. 형식 yyyy-mm-dd 일 이후

+0

밀리미터/DD/YYYY 대신하고 만약 당신이 입력과 같은 날짜 2분의 13/2012 년 13 월이 없다고 불평하고 시간을 알려줍니다. 0 (1/1/1970) –

답변

4

, -.를 교체하려고 :

date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT']))); 
3

을 함께 시도 :

$date = date_parse_from_format("Y.m.d", $row['DMT_DATE_DOCUMENT']); 
$time = mktime($date['hour'], $date['minute'], $date['second'], $date['month'], $date['day'], $date['year']); 
echo "<p><h6>".date('d/m/Y', $time)."</h6></p>"; 

또는 단지를 (date_parse_from_format()를 사용하는 대신 strtotime()) :

$date = date_parse_from_format("Y.m.d", $row['DMT_DATE_DOCUMENT']); 
echo "<p><h6>{$date['day']}/{$date['month']}/{$date['year']}</h6></p>"; 
+1

예, '날짜'는 'date_parse_from_format'의 직접 출력을 허용하지 않습니다. – deceze

+0

네가 맞아. 미안하지만, 지금은 바로 잡을거야. – fquffio

2

the strtotime page in the PHP manual에서 인용. 제 m의

날짜는/D/Y 또는 D-m-Y 포맷은 다양한 구성 요소들 사이의 분리를보고 명확화되어 세퍼레이터 슬래시 (/)이면 미국 m/D가/Y 상정; 구분 기호가 대시 (-) 또는 점 (.) 인 경우 유럽 d-m-y 형식이 사용됩니다.

은 가능하면 ISO 8601 (YYYY-MM-DD) 날짜 DateTime::createFromFormat()을 사용하는 것이 가장 좋습니다, 잠재적 모호성을 방지하기 위해.

귀하의 경우 YYYY-MM-DD 또는 d.m.y 형식이어야합니다. 그런 다음 예를 들어 date_create_from_format

사용하는 사용자 정의 형식을 구문 분석하려면

, strtotime으로는 가정하기 때문에 아마

date_create_from_format('Y.m.d',$row['DMT_DATE_DOCUMENT']) 
관련 문제