0

私はウェブサイトのオーナーのFacebookページからのイベントを表示するウェブサイトを持っています。数週間前、誰かがイベントの時間がウェブサイト上で間違って表示されていることに気づいたが、2年前から間違っていた。だから、基本的に私は問題が何かを理解しようとしています。 00:00から0500Facebook SDKがイベントの不正な時刻を返す

はここ

イベントXは2017-12-18T17の開始時刻のタイムスタンプを持っている例です。その日付は正しいです。その時刻は1700または5:00です。これは正しい時刻です。

だから私は、私はこれは私が終了時刻が正しく変換しないと同じ問題を抱えている午後10:00

の時間を返し

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

を表示することができます何かにタイムスタンプを変換するには、このコードを持っています。

私は(上記と同じタイムスタンプを使用して)日付を変換するために、このコードを使用しています:

$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であるが、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

あなたは紳士で学者です。ありがとうございました! –

関連する問題