2009-05-19 5 views
4

javasriptなしでユーザーエージェントのタイムゾーンを判断する方法はありますか?しかし、携帯電話とクライアントの多くのために、JSがexistantまたはオフにされていないかjavascriptを使用せずにユーザーエージェントのタイムゾーンのオフセットを決定しますか?

<script type="text/javascript" language="JavaScript"> 
var offset = new Date(); 
document.write('<input type="hidden" id="clientTzOffset" 
name="clientTzOffset" value="' + offset.getTimezoneOffset() + '"/>'); 
</script> 

通常、私には、JavaScriptのスニペットを実行します。賢いことができますか?あるいは、私はあなたがどこにいるのか、どこにいるのか教えてください。あなたはIP検索を行い、その後、彼らは何ができるか、タイムゾーン、国から決定することができる、サーバー側の言語とたぶん

答えて

2

でも、私は、これが問題となる可能性が想像します。

この道を進むと、この質問(および回答)が参考になる場合があります。

Getting the location from an IP address

+0

これは良い最初の近似かもしれません。あなたはgeolocation/timezoneにIPをどのように関連づけますか? – MikeJ

+0

良いGeoIPデータベースは間違いなくあなたにタイムゾーンを与えることができます(http://www.siafoo.net/article/53を参照)。しかし、これはJSよりもあまり正確ではありません。 –

+0

@Matthew - もちろん、携帯端末のようなJSを欠いているユーザーエージェントでは、何よりも優れています。 – MikeJ

5

両方を使用してください。 javascriptでリストまたはテキストフィールドのデフォルト値を設定しました。 JavaScriptのない人の割合は非常に小さく、負担は小さいです。

私は「リクエストの日付を使用してください:ヘッダー」と言うつもりでしたが、これは応答ヘッダーだと思われます。

1

私はウェブサイトを見てきましたが、ユーザーがそのタイムゾーンにいた時間を聞くのではなく、「正しい時間を選んでください」と尋ねました。 「タイムゾーンはあなたのものです」との微妙な違いですが、理解しやすくなります。残念ながら私はもうウェブサイトを見つけることができません

+0

悲しいことに、これは同じことではありません。夏時間やその他の考慮事項のため、異なる時間帯で同じ時刻になることがあります。 –

3

私は別の解決策を考えましたが、少し複雑です。 max-age:1レスポンスヘッダーを使っていくつかの偽のHEAD要求を設定して、ブラウザを強制的に再フェッチするようにします。

が最善取得するにはので

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT 

ただ、最初の応答を持つ任意のLast-Modifiedヘッダを送信しないように注意してください:あなたは、その後のif-修正-ので、それほどのような現代の任意のブラウザからヘッダが受信すべき可能であれば、Last- 変更されたヘッダーフィールドで受信した正確な日付文字列を使用するように、クライアントは にアドバイスします。

"可能な限り"の免責事項に注意してください。これとヘッダー記述の他の部分は、サーバーが何も知らないときにクライアントが独自の時計を使用することを意味します。

ヘッダーの適切な組み合わせによって、これは実際にはうまくいく可能性があります。

EDIT:FFでいくつかのテストを試しましたが、クライアントタイムでif-modified-sinceをトリガーするヘッダーの有効な組み合わせを見つけることができませんでした。 FFは以前に最後に変更されたヘッダーがある場合にのみヘッダーを送信し、有効な日付でない場合でも値を戻します。

+0

非常に賢い。私が今日後でオフィスに着いたら、これを設定します。私はあなたが何かを持っているかもしれないと思う。 – MikeJ

関連する問題