サーバー送信イベントを使用していて、ビューアーの現地時間に合わせて時刻を表示しようとしています。PHP、サーバー送信イベント - date_default_timezone_get()がリモートファイルで正常に動作しない
私のデータベースのすべての時間はDATETIME
フィールドに、GMTとして格納されます。
コードブロック1
date_default_timezone_set('GMT');
$now = date('Y-m-d H:i:s');
$stmt = $db->prepare('INSERT INTO...');
$stmt->execute(array($now));
そして逆(それが必要以上におそらくより複雑):
コードブロック2
がリモート-というファイルにあるときにこれはすべてのウィンドウは、ブラウザでのライブのとき、正常に動作しますが、離れて落ちる:
はJavaScript
コード・ブロック3
var src = new EventSource('sse_bot.php?uid=' + userID);
ここで、date_default_timezone_get()
はsse_bot.php
ファイルにあります。
私は、ブラウザのウィンドウからセッション変数を設定してみました:
コード・ブロック4
$utimezone = date_default_timezone_get();
$_SESSION['tzone'] = $utimezone;
、その後sse_bot.php
ファイルにそれを使用して:
コードブロック5
$utimezone = $_SESSION['tzone'];
ダイスはありません。
どのような考えですか?
EDIT 1
私は戻って、それをエコー、および$utimezone = $_SESSION['tzone'];
は、適切な値(私の場合は 'アメリカ/デンバー')にそれをを設定しません。しかし、それは問題がラインで、具体的には、あるようです:私はブラウザ経由でコードブロック2を使用する場合
コードブロック6
$date->setTimezone(new DateTimeZone($utimezone));
、それが完璧に動作します。
コードブロック7
$date->setTimezone(new DateTimeZone('America/Denver'));
そして、すべてが順調である:私も、ラインを変更することができます。
sse_bot.php
ファイルと同じ変更を加えても効果はありません。すべての軽微な後に返される時間は、それに入った時間と同じです。
FWIW:今後の参考のために、常にUTCとして保存し、そこからの変換:) – zanderwar