2014-12-01 2 views
-1

나는 같은 내 웹 사이트 페이지에 시간대를 설정 한 :변경 시간을 12 시간 형식에서 12 시간 AM/PM 형식

$time = date("h:i:sa"); 
: 나는 같은 시간 변수를 선언 한

date_default_timezone_set("America/Los Angeles"); 

그런 다음 데이터베이스에 추가하십시오. 그때 다시 포맷을 시도, 같은 같은 데이터베이스에서 시간을 검색 :

$time2 = date("h:i A", strtotime($row['Time'])); 

다음이 시간을 인쇄 :

echo $time2; 

이 방법은, 그러나, AM과 PM을 망쳐 놨어요. 예를 들어 야간에 오후 11시 59 분에 데이터베이스에 $ 시간이 추가 된 경우 오후 11시 59 분이 아닌 오전 11시 59 분에 인쇄됩니다. 문제는 데이터베이스에 시간이 추가 될 때 AM과 PM 사이에 명확한 구분이 이루어지지 않는다고 생각합니다. 그러나이 문제를 해결하는 방법은 아직 확실하지 않습니다.

$time = date("h:i:sa A"); 

을 다음과 같은처럼 접근 : 나는 그런 것처럼, 그 안에 이미 오전 오후로 시간을 추가 해봤

$time2 = $row['Time']; 

을하지만 여전히 버그를 수정하지 않습니다. 내 12 시간 형식을 유지하면서이 문제를 해결할 방법이 있습니까? 또는이 기능을 사용하려면 24 시간 형식으로 변경해야합니까?

+2

데이터베이스에 AM/PM으로 시간을 저장하지 마십시오! datetime 또는 timestamp 열 유형에 대해 읽습니다. http://dev.mysql.com/doc/refman/5.0/en/datetime.html 출력 중에 만 포맷하십시오. 그렇지 않으면 정상적으로 정렬하거나 쿼리에 시간 범위를 적용 할 수 없습니다. – Cheery

+0

왜 방금 24 시간 형식으로 저장하지 않았습니까? AM/PM은 어쨌든 프리젠 테이션 용도로만 사용됩니다. – Ghost

답변

0

DATETIME, DATE 또는 TIME 분야에 Y-m-d/H:i:s 형식으로 날짜/시간을 저장하기 시작하십시오. 당신의 삶과 우리의 삶은 훨씬 쉬울 것입니다. 그때까지

이 PHP 솔루션을 사용 :

$dt = DateTime::createFromFormat('!h:i:sa', $row['Time']); 
echo $dt->format('H:i:s'); 

demo

또는 MySQL의 솔루션 :

SELECT STR_TO_DATE('08:46:07am','%h:%i:%s%p') 
관련 문제