0

웹 사이트 소유자의 Facebook 페이지에서 이벤트를 표시하는 웹 사이트가 있습니다. 몇 주 전에 누군가는 웹 사이트에서 이벤트 시간이 잘못 표시되고 있음을 알았지 만 2 년 동안 정확했습니다. 그래서 근본적으로 나는 문제가 무엇인지 알아 내려고 노력하고 있습니다. 00 : 00-0500Facebook SDK가 이벤트에 대한 잘못된 시간을 반환합니다.

여기

이벤트 X가 2017-12-18T17의 시작 시간 소인이있는 예입니다. 그 날짜는 정확하며 그 시간은 1700 또는 5:00입니다.

그래서 나는

$start_time = date('g:i a', strtotime($event['start_time'])); 

이 내가 종료 시간이 제대로 변환하지와 같은 문제가 오후 10시

의 시간을 반환 표시 할 수있는 일에 타임 스탬프를 변환하는이 코드를 .

나는 (위의 동일한 타임 스탬프를 사용하여) 날짜를 변환하려면이 코드를 사용하고 있습니다 :

$start_date = date('l, F j, Y', strtotime($event['start_time'])); 

이 훨씬 더 날짜가 정확하게 변환하는 경우, 방법을 수행하기 때문에 저를 혼란 정확한 날짜를 반환 시간이 올바르게 변환되지 않습니까?

누구든지 내가 웹 사이트에서 이러한 이벤트를 다시 얻을 수 있도록 변환 할 시간을 갖도록 도와 줄 수 있습니까?

+0

다른 시간대 문제로 보입니다. –

+0

'date ('P')'의 출력은 무엇입니까? – Ben

+0

@Ben date ('P') 결과는 +00 : 00입니다. –

답변

1

다른 시간대 문제입니다.

시간대가 -05:00 인 datetime이지만 date('P') 출력을 사용하는 경우 서버 시간대는 +00:00입니다. DateTime 클래스를 사용하여 datetime을 원하는 시간대로 변환 할 수 있습니다.

// convert time to datetime instance 
$timestamp = strtotime($event['start_time']); 
$datetime = new DateTime; 
$datetime->setTimestamp($timestamp); 

// set timezone to US/Eastern, Eastern Standard Time (EST), UTC -5 
$datetime->setTimezone(new DateTimeZone('US/Eastern')); 

// output datetime format 
$datetime->format('g:i a'); 
$datetime->format('l, F j, Y'); 
+0

신사와 학자입니다. 고맙습니다! –