2014-10-07 2 views
0

시간/날짜 문제가 있습니다. 오늘 날짜와 시간 (자정)의 시작 부분에서 현재 날짜와 시간을 비교하려고합니다. 현재 시간은 예상대로PHP 시간이 'off'인데 8 시간 14 분

echo date('d M, Y H:i:s e')."<br>"; 

이 반환, "2014년 10월 7일을 12시 51분 25초 미국/로스 엔젤레스"

그리고 오늘의 시작 부분에 자정에 시간을 얻을 수있는, 내가 가진 :

echo date('d M, Y H:i:s e',strtotime(date('D, d M, Y')))."<br>"; 

이 반환 :해야하지 UTC 20 8시하지 수 있기 때문에 "2014년 10월 7일는 20시 14분 0초 미국/로스 엔젤레스"

10 (오후 8시) 홀수 : 00? 14 분?

아무도 나를 이해할 수 있습니까? 내가 뭘 놓치고 있니?

많은 감사

+2

그 라인이 UGLY **입니다 **와 ** 무의미을 **. 왜 오늘 날짜를 가지고 비표준 형식으로 포맷 한 다음 유닉스 타임 스탬프로 변환 한 다음 다른 형식으로 변환하려고합니까? –

+1

간단히'echo date ('d M, Y 00:00:00 e');가 작동합니다. – showdev

답변

1

당신은 strtotime 기능에 혼란 날짜 문자열을 보내고있다.

당신이하려고하면이 :

echo date('d M, Y H:i:s e').'<br>'; 
echo date('d M, Y H:i:s e',strtotime(date('Y-m-d H:i:s')))."<br>"; 

Y-m-d H:i:s 함께 strtotime 작동하려면 더 나은 형식은과 같이 일관된 결과를 얻을 것이다.

이 기능은 유닉스 타임 스탬프에 해당 형식을 구문 분석을 시도합니다 영어 날짜 형식과 포함 된 문자열을 제공 할 것으로 기대

(초 년 1 월 1 일부터 1970 00 다음 docs on strtotime에서

: 00 : 00 UTC), 현재 주어진 시간 소인에 비례하여, 또는 현재 시간이 제공되지 않으면 현재 시간.

이를 얻으려면 가능한 경우

잠재적 모호성을 방지하기 위해, 그것은 ISO 8601 (YYYY-MM-DD) 날짜 또는 날짜 시간 :: createFromFormat()를 사용하는 것이 가장 좋습니다 자정에 찾고있는 시간 (이 방법을 제안하지 않겠습니다) :

echo date('d M, Y H:i:s e',strtotime(date('Y-m-d')))."<br>"; 

"timel ESS는 "날짜와 날짜 함수 내에서 직접 정적 00:00:00를 삽입 :

echo date('d M, Y 00:00:00 e')."<br>"; 

하지만 DateTime objects를 사용하여 좋아 :

$midnight = new DateTime('today'); 
echo $midnight->format('d M, Y H:i:s e').'<br>'; 
// Output from sandbox is: 07 Oct, 2014 00:00:00 US/Pacific<br> 

좋은 부분은 당신이 쉽게 추가 조작없이 기본적를 비교할 수 있습니다

$now = new DateTime('now'); // 2014-10-07 12:34:56 
$midnight = new DateTime('today'); // 2014-10-07 00:00:00 

var_dump($now > $midnight); // true 
var_dump($now < $midnight); // false 
var_dump($now === $midnight); // false 
var_dump($now !== $midnight); // true 
+1

날짜 ('d M, Y H : i : s e', strtotime (날짜 ('Y-M-d'))). "
"; 자정 시간 동안 – JBar

+0

@ JohnConde 삭제하기 전에 귀하의 의견을 보았고 선호하는 방법으로 – sjagr

+1

+1로 답변했습니다. 이유는 OP 코드가 예상치 못한 시간을 반환하는 이유를 묻기 때문이며 여기에는 의사 참조가 포함되어 있습니다. – showdev

1

date('Y-m-d H:i:s') 당신에게 현재 시간이 아닌 자정을 제공합니다 .다음 코드를 사용해보십시오 :

echo date('d M, Y H:i:s e',strtotime(date('Y-m-d 00:00:00')))."<br>"; 

"00:00:00"자정을 설정하십시오.

그리고 당신은이 간단한 변형 사용할 수 있습니다 : 코드의

echo date('d M, Y 00:00:00 e')