0

このプロジェクトを最も単純な用語に要約します。

  1. ユーザーがボタンをクリックすると、NOW()のタイムスタンプでレコードが作成されます。
  2. NOW()はもちろん、サーバーでのレコード作成の時間と同じです。
  3. 私は彼らに私のものではなく、彼らのタイムゾーンに基づいた統計を表示する必要があります。

MySqlでタイムゾーンオフセットを調整解除するための最良の方法は何ですか?オフセットを処理するように設計された特定のフィールド形式はありますか?

私は次の線に沿って物事を実行する必要があります:

   SELECT DATE_FORMAT(b_stamp, '%W') AS week_day, count(*) AS b_total, b_stamp
      FROM table
      WHERE
   (b_stamp >= DATE_SUB(NOW(), INTERVAL 7 DAY))
      AND
   (user_id = '$user_id') GROUP BY week_day ORDER BY b_stamp DESC

ユーザーにどのタイムゾーンにいるのかを尋ねたくはありません。JSがこのデータをブラウザーから引き出す唯一の方法だと思います。たぶん、彼らがモバイルデバイス上にあり、これがWebベースのアプリではない場合、私はそこに到達することができますが、それはこれが進む方向ではないかもしれません。

私は、それらのオフセットを決定し、変数を「server_time」+/-their_offsetに設定するのが最善の方法であると考えています。これにより、サーバーが別の場所にあるように見えます。コードに追加する必要のある+/-ロジックがなく、コードを混乱させて醜くするので、これが最善だと思います。

一方、これにより、データはデータベースに配置され、タイムスタンプが全面的に表示されます。

提案?

4

2 に答える 2

1

次のように、JavaScriptを使用してクライアントからタイムゾーンを取得できます。

var timeZone =(new Date()。gettimezoneOffset()/ 60)*(-1);

変数を出力して、使用する前にテストしてください。これがあなたの最も簡単な賭けになると思います。

于 2009-04-22T02:37:59.073 に答える
0

JSを使用する以外に、IPアドレスのタイムゾーンを取得して(ip2locationなどを使用)、MySQLのCONVERT_TZ()関数を使用することもできます。

于 2009-04-22T03:59:07.490 に答える