了解しました。ユーザー入力時刻をGMTに正しく変換しているかどうかはわかりません。複数のタイムゾーンにまたがるユーザーに「イベント」を入力してもらい、現在の「イベントまでの期間」または「それ以降の期間」を確認できる必要があります。time();
これが私が彼らが入力した時間を変換することを計画していた方法です。07/21/2011 01:30 am
それは、Thenのようなものとして始まります。
echo gmdate('Y-m-d H:i:s',strtotime('07/21/2011 01:30 am'));
私にくれます2011-07-21 08:30:00
そこで、その価値をとって、「このイベントまでの時間」をユーザーに表示することを計画していましgmdate('Y-m-d H:i:s',strtotime('07/21/2011 01:30 am'));
たtime()
。しかし、結果には常に10時間が追加されているようです。したがって、今から30分後にイベントをスケジュールした場合、今から10時間30分と表示されます。だから、現地時間を正しく変換していないと思っているのです。
私は何が欠けていますか?たぶん私はGMTを正しく理解していません。関係するすべての時間がGMTであることを確認して、すべての時間がWebサイトのすべてのユーザーに共通であることを確認するにはどうすればよいですか?
役立つ場合のその他の情報:サーバーのタイムゾーンはAmerica/Los_Angeles
編集:みんなの提案の後、私はこれを私のphpコードの上部に設定しようとしました:
date_default_timezone_set("GMT");
差分を計算するために使用date('Y-m-d H:i:s')
してみましたが、10時間後ではなく「3時間前」と表示されています。したがって、これは間違いなく物事を変えました。
しかし、それでも正しくありません。
date('Y-m-d H:i:s')
正しい現在のGMTを返していることを確認しました。いいですね。
ただし、ユーザー入力日はオフです。どうすれば間違って変換できますか?
もう一度編集(Salman Aの提案後のいくつかのテスト結果を含む):
2:55am-私の現在の現地時間EST
date('Y-m-d H:i:s')
として表示されます2011-07-21 06:56:43
-これは正しいです
3:00 am ESTは、私が次のように提出した将来の時間です。07/21/2011 03:00 am
「変換」してDBに送信する時間を取得する方法は次のとおりです。
$time = $_POST['time'];
//there is where im assuming it turns my EST time to the GMT equivalent.
$the_date = strtotime($time . ' GMT');
$utctime = gmdate('Y-m-d H:i:s',$the_date);
イベントが今から5分後に通知されることを関数が期待していますが、その時間は休みです。
ユーザーが送信した時刻が実際にGMTi表示に変換され、08:00または07:00ではない-として表示されることを確認するためだけに(そのうちの1つはGMTに相当すると思います$utctime
) 2011-07-21 03:00:00
では、どうすれば変換できますか?
ですから、私が見ているのはstrtotime($time . ' GMT');
、私が提供する現地時間にGMTを適用しているようには見えません。ちなみに、誰かがdate_default_timezone_set("GMT");
私のコードにあることを示唆したので、私はそれを一番上に持っています。削除する必要がありますか?しかし、それを削除するとGMTが正しくないことに気づきました。だから私はそれを残しました。