2011-03-01 12 views
1

다음 날짜 ($ mydate) (05/02/2011)를 출력하는 실행중인 SQL 쿼리에서 결과를 가져 오는 중 .... 형식이 dd/mm/yyyy ... 내가PHP - 날짜 형식 변경

date('l jS \of F Y',strtotime($mydate)) 

임 입력 된 것과 완전히 다른 날짜를 받고 실행하면, 인스턴트 메신저는 mm/dd/yyyy 형식을 사용하지 않는 때문입니다 수집.

제대로 작동하려면 어떻게 바꾸어야합니까?

건배.

답변

3

strptime()을 사용하여 날짜/시간 형식을 구문 분석 할 수 있습니다. 날짜 문자열을 YYYY-MM-DD로 변환 할 수도 있습니다.이 문자열은 strtotime에 의해 항상 정확하게 구문 분석됩니다. 예 :

$date = implode('-', array_reverse(explode('/', $date))); 

하지만 다른 답변에 동의합니다. 먼저 데이터베이스 설정을 살펴보십시오. 사실상 모든 데이터베이스는 YYYY-MM-DD 형식을 직접 출력 할 수 있으며 대부분의 데이터베이스는 기본적으로 그렇게 할 것입니다. 왜 당신이하지 않는지보십시오. 항상 그 형식으로 제공하는 경우

1

DB가 dd/mm/yyyy 인 이유는 무엇입니까? 어떤 DB를 사용하고 있습니까? MySQL의 경우 DATE 필드는 strtotime()을 사용하여 올바르게 동작하는 YYYY-MM-DD를 출력해야합니다.

explode('/', $mydate) 수동으로 dd, mm 및 yyyy를 분할 한 다음 새 날짜 문자열을 재구성하거나 mktime()을 사용하여 결과 숫자를 직접 사용할 수 있습니다.

0

Herestrtotime()이 이해하는 형식 목록입니다.

어떤 SQL이 그런 이상한 날짜 형식을 출력합니까? 아니면 스스로 날짜를 정 했나요?

0

, 당신은

$newtime = preg_replace("/\d\d\/\d\d/\d\d\d\d/", "$3/$2/$1", $date); 

후 바로 그것은 확실히 가장 우아한 해결책이 아니다 strtotime()

에 그 연결, 년/월/일로 변환하는 데 사용할 수있는, 나는 실제로 데이터베이스 재 작성을 제안 할 것이다. (새로운 칼럼을 만들고, 각 엔트리를 읽고, 새 날짜를 생성 한 다음, 이전 날짜 필드를 삭제하고, 새로운 날짜를 삭제한다. 일단).