2010-12-19 7 views
0

私は、イベントが実行されたときのユーザーIDと時刻をクライアントが実行するすべてのアクティビティを記録するWebアプリケーションを持っています。今のところ、アプリケーションはDBサーバーの時刻を記録します。私のアプリケーションは異なるタイムゾーンをサポートしていますので、イベントを呼び出すクライアントマシンの時刻を取得し、その時刻をDbサーバーのタイムゾーンではなくdbに格納します。テーブル 列のクライアントへのDb wrtのロギング時間TimeZone

構造:ユーザーIDでEventId、時間は

私の質問は、私はクライアントマシンを記録してもらう行う方法です(この値は、クライアントマシンの時間ではなく、DBサーバーの値にする必要があります) dbserverのタイムゾーンではなくタイムゾーンです。

私は十分にはっきりしていたと思います。 ありがとうございます

+0

私は質問を編集しました – user428747

+0

あなたのクライアントは何ですか?ブラウザ? C#アプリケーション? – Oded

+0

このような質問は、いくつかの方法を示唆しています:http://stackoverflow.com/questions/630321/how-do-you-retrieve-the-client-users-time-zone-for-a-web-application –

答えて

1

ここで問題となっているのはクライアントブラウザのタイムゾーンですが、残念ながらこれを行う方法はありません。オプションの数ががあります。

I.は、あなたの「ユーザー設定」セクションの一環として、ユーザー

を掲載し、ユーザーに好みのタイムゾーンを設定するためのオプションを与えます。

II。推測する

HTTP_ACCEPT_LANGUAGEヘッダーを使用すると、国を推測できます。明らかに設定が「en」または「fr」または「es」の場合は、同様に国の好みがある場合は、あなたの推測はそれになります。 「en-US」または「en-GB」または「fr-FR」とすると、あなたの推測はより近くなります。エッジケースを処理するには、[ユーザー設定]ボックスが必要です。

III。 JavaScriptを使用

JavaScriptはクライアントブラウザのGMTからのオフセットを与えるgetTimezoneOffset()関数を持っています。このことができます

How can I obtain the local time in jQuery?

希望:以下は、この機能の使用例を示します。

2

データベースの最後では、TIMESTAMP WITH TIMEZONEデータ型を使用します。

明らかに、これによってクエリが複雑になります。たとえば、土曜日のレコードを抜き出したい場合は、挿入を開始したユーザーが見た土曜日、またはデータベースを見ている人が見た土曜日または土曜日の土曜日を意味しますか(または他の「公平な」視点)。

関連する問題