0

編集:

共有サーバーで DB タイムゾーンを変更することは不可能であることがわかりました。

そのため、 PHP を使用して問題を解決する必要があります。どのようにそれを行うかについてのアイデアはありますか?NOW() に 2 時間を単純に差し引く必要がありますか?


私の mysql DB に保存されたタイムスタンプは 2 時間ずれています。

イベントを保存するクエリ:

$sql=query("INSERT INTO events (id, sender, time) VALUES ('','$id',NOW())");

eventsこれが私のDBのテーブルです:

id    sender          time
23     4        2013-11-03 18:57:47

問題は、イベントが発生したときが午後 6 時 57 分ではなく午後 4 時 57 分だったことです。

どうすれば修正できますか?

役立つかもしれないいくつかの詳細:

date_default_timezone_get();ヨーロッパ/ベルリンを出力します。

私はカリフォルニアにいます。

このバグは、localhost での開発では発生しません。製品のみ。

編集

を実行するSELECT @@global.time_zone, @@session.time_zone;と、何も出力されません。

 @@global.time_zone   @@session.time_zone
      SYSTEM               SYSTEM
4

3 に答える 3

2

DB サーバーが別のタイムゾーンにある可能性があります。たとえば、AWS DB サーバーはすべて UTC を使用しており、それを変更する方法はありません。これを回避する唯一の方法は、DB 接続をインスタンス化した後でタイムゾーンを手動で設定することです。これがあなたの問題かどうかはわかりませんが、解決策になる可能性があります。

SET time_zone = 'US/Eastern';
于 2013-11-04T03:19:42.860 に答える
1

PHP の日付と時刻:$phpDateTime = date('Y-m-d H:i:s');を使用して、NOW() を使用する場所で $phpDateTime を使用することもできます。PHP が適切なタイムゾーン設定 (オンザフライで実行できます) を持っている限り、これは問題なく機能します。

于 2013-11-04T04:41:45.353 に答える