2

ASP.Net MVCアプリケーションでクライアントのタイムゾーン名(インド標準時など)が必要です。

だから、機能が使えTimeZoneInfo.FindSystemTimeZoneById(TimeZoneName)ます。

new Date().getTimezoneOffset()参照)で試してみました

ただし、このコードでは夏時間に問題があります。

javascriptでは、私も試してみましたnew Date().toString()

しかし、これは異なるブラウザで異なるフォーマットの結果をもたらします。

Firefox、クローム、サファリでは、回答は「2012年5月8日火曜日14:00:00 GMT + 0530(インド標準時)」です。

IE8では、「2012年5月8日火曜日14:00:00 UTC+05302012」です。

オペラでも同様の問題。

したがって、この方法はIEとOperaでは機能しません。

クライアントのタイムゾーンを特定するための最良の方法は何ですか?

4

3 に答える 3

3

最良かつ最も利用されている方法は、クライアントのIPを利用して、サードパーティのライブラリとデータベースを介してクライアントの場所を特定し、クライアントの場所に基づいてタイムゾーンを決定することです。

于 2012-05-08T08:56:47.757 に答える
3

タイムゾーンまたは UTC からのオフセットだけを知る必要がありますか? タイムゾーンは ISO 標準ではなく、ほぼ任意に変更できるため、UTC からのクライアントのオフセットを使用することを好み、ログイン時またはクライアント時間が必要なフォームをクライアントが送信するたびに、常にクライアントからオフセットを取得します。時々、私はクライアントの GTM オフセットを計算し、それを保持して、時間を表示または使用する場所で使用します。

したがって、指定されたローカル日付をユニバーサル文字列として返す、次のようなグローバル JavaScript 関数があります。

    function aspClientDateTime(dateObject) {
    return dateObject.getFullYear() + '-'
        + this.leadingZero((dateObject.getMonth() + 1), 2) + '-'
        + this.leadingZero(dateObject.getDate(), 2) + ' '
        + this.leadingZero(dateObject.getHours(), 2) + ':'
        + this.leadingZero(dateObject.getMinutes(), 2) + ':'
        + this.leadingZero(dateObject.getSeconds(), 2);
    }

フォームの送信時に、現在のクライアントの日付を取得し、フォームに保存します。

myForm.clientTime.val(aspClientDateTime(new Date()));

次に、ブラウザで現在時刻を確認し、サーバーで UTC オフセットなどを計算できます。

タイムゾーンの問題は、サモアが最近行ったように、どの政府も明日新しいタイムゾーンを導入できることです。通常、ユーザーが現在どのタイムゾーンにいるかではなく、現在のユーザーのオフセットを知りたい.

後者が本当に必要な場合は、Skype と同じように、彼らに尋ねる必要があるかもしれません。

于 2012-05-08T10:04:38.940 に答える
0

JavaScriptを介してタイムゾーンを検出するためのライブラリがあります。それはあなたに十分なタイムゾーンの名前を与えるでしょう。ジオロケーションやIPルックアップを行わないため、非常に高速ですが、非常に正確ではありません。たとえば、中央ヨーロッパ時間帯のすべての人に「Europe/Berlin」が返されます。ただし、サーバー側の日時の正規化には十分なはずです。

https://bitbucket.org/pellepim/jstimezonedetect

于 2012-05-08T12:59:33.383 に答える