2011-06-15 9 views
5

異なるロケールの人々のイベントを表示するWebアプリケーションを作成する必要があります。私はほとんどそれを終えたが、2日に問題があります:、日付はユーザーのコンピュータの設定によって異なりjavascriptオブジェクトの日付を使用して異なるロケールとタイムゾーンのJavascriptの日付オブジェクト

  • をしてdfferentタイムゾーンに関して場所でイベントがありますかどうかは
  • 信頼性がありませんユーザーの現在の位置、私はそれを()の中に印刷する必要があります。 javascriptで、指定されたタイムゾーンと夏時間の設定で日付オブジェクトを構築することは可能ですか?
私はまた、jsdateや日付Webサービスとして、いくつかの回避策を見つけるが、彼らは、そのようなので、上の追加日として日付操作のための正しいタイムゾーンと夏時間の設定(とjavascriptオブジェクトを持つことの問題を克服していない

)。

答えて

0

UTCの日付と時刻をすべて使用する可能性があります。そうすれば、変換するものはありません。

もう1つは、サーバーに時刻と日付を指定させることです。そうすれば、ユーザーがそれを正しく設定する必要はなく、ユーザーのタイムゾーンがどこにあるか心配する必要はありません。

2

Dateオブジェクトのポイントがありません。特定の時点を表します。私が言うように、それは世界中で1308150623182です。タイムゾーンは、の表示をにしたいときにのみ開始されます。 「1日の追加」のような操作は、タイムゾーンをまったく含まない。

+2

1日を追加するには、実際にタイムゾーンが必要です。すべての日が24時間であるわけではありません。時間帯、夏時間のルール、問題の特定の日付によっては、暦日の長さは23時間、24時間、または25時間(または歴史的な時間帯について話す場合は他の奇妙な値)になります。したがって、常に86400000を追加することは簡単な問題ではありません。 –

+1

多分問題は不明です。それが朝の2:30の場合、タイムゾーンが前に移動する前の日に、「1日を追加する」とはどういう意味ですか? – Malvolio

+2

正確に。あなたが「24時間を追加する」という意味なら、あなたは大丈夫です。しかし、ほとんどの人は、これらの移行を目に見えないものと考えています。なぜなら、通常は発生時に眠っているからです。だから、仮釈放者に何時に午前2時30分から1日になるかを尋ねると、彼らは午前2時半を期待しています - 可能な午前1時30分または午前3時30分。たとえそのカレンダーが曖昧であっても、カレンダーの観点から考える傾向があります。 :) –

0

使用getUTCDate()getUTCHours()、...代わりgetDate()getHours()の、... getTimetoneOffset()も、役に立つかもしれません。

6

留意すべきことはいくつかあります。

ストアUTC時間内のすべてのイベントの日付時刻

はい、何もこの動きまわるはありません。

すべてのタイムゾーンをご覧ください...システム内のすべてのユーザーの

...。次の検出スクリプト(http://site.pageloom.com/automatic-timezone-detection-with-javascript)を使用できます。たとえば、 "America/Phoenix"などのタイムゾーンキーを渡します。

あなたのケースでは、ユーザーがタイムゾーンを切り替える可能性があるため、イベントと共にタイムゾーンを保存する必要がありますが、イベントは常に特定のイベントで発生します。 (なんてこった)

あなたの表示機構

を選択して、JavaScriptを使用して自分のイベントの日付をローカライズしたい場合は、そのために気の利いたライブラリが(前のスクリプトに付属のキーを使用できる)もそこです。ここに:https://github.com/mde/timezone-js

var dt = new timezoneJS.Date(UTC_TIMESTAMP, 'America/New_York'); 

または

例えばUTC_TIMESTAMPは 1193855400000可能性が
var dt = new timezoneJS.Date(2006, 9, 29, 1, 59, 'America/Los_Angeles'); 

:あなたはたとえばこれを行うことができ、そのライブラリと

America/New_Yorkは、イベントが発生したときに検出したタイムゾーンです。

このオブジェクトは、通常のJavaScript Dateオブジェクトとして動作します。しかし、指定したタイムゾーン(DSTを含む)に自動的に「訂正」されます。

場合は、ページを提供する前に、バックエンドのすべての修正を行うことができます。私はあなたがそこで使っているプログラミング言語がわからないので、すぐにあなたにアドバイスを与えることはできません。しかし、基本的には同じタイムゾーンを知っていれば同じロジックになり、UTCのdatetime - > datetimeをローカライズできます。すべてのプログラミング言語にはライブラリがあります。