0

さて、私のウェブサイトでは、人々が自分の仕事のスケジュールを保存できるようにしています。シフトの開始日時と終了日時を入力します。簡単ですよね?

サイトを見て、ボブがシカゴで今夜の午後 4 時から 6 時まで、ジョーがニューヨークで午後 8 時から 10 時まで働いているのを見ることができるという考えです。それが、アプリに日付を表​​示する方法です。カリフォルニアからサイトを表示している場合でも、ボブにはシカゴの時間を表示し、ジョーにはニューヨークの時間を表示したいと考えています。Bob が午後 2 時から 4 時まで勤務し、Joe が午後 5 時から 7 時まで勤務していることを示すカリフォルニア時間にこれらの時間を変換したくありません。

私のサイトにはサンプル データがあり、すべてが同じタイムゾーンに配置されている場合は問題ありませんが、現在は米国中北部の Azure サーバーに展開しています (そこにある SQL Azure も使用していますが、どこにあるかは不明です)。 、そして現在、日付と時刻はすべてずれています (7 時間前にジャンプ)。

この理由は、私が多くの Ajax と JSON を使用しているためだと思います。JSON では、日時を /Date(1240718400000)/ のようにフォーマットする必要があります。ここで、数値はエポック/Unix 時間からのミリ秒を表します。カレンダー/週/日ビューでスケジュールを表示しますが、これには多くの JavaScript 日時比較が必要です。

とにかく、私がする必要があることを行う正しい方法を知っている人はいますか? 日時をUTCとして保存する必要があると考えていますが、ユーザーの勤務シフトが行われるタイムゾーンも知る必要があり、C#側で調整する必要がありますが、何かする必要がありますかJavaScript側で?

私はただ混乱しています。現時点では、頭を包み込むには変数が多すぎるようです。

4

1 に答える 1

0

あなたは正しい軌道に乗っていると思います。

複数のタイム ゾーンでアクセスされる Web アプリケーションの最初の経験則は、時刻を UTC 形式で格納することです。これは、日付/時刻の値を UTC で格納する主な利点は、ユニバーサルな参照ポイントを提供することでデータを転送可能にすることです。すべてのタイムゾーンがオフセットされています。

あなたの場合、ユーザーのタイムゾーンを保存して、この情報に基づいて時間をレンダリングできるようにするのが最善です。

UTC 日付/時刻とユーザー タイム ゾーンを読み取ると、これを C# コードで直接計算し、このデータを通常の文字列としてビューに渡すことができます。または、これは実際にはユーザーの日付ではなくデータとして使用されるためです。JS を使用している場合は、以下のようなことをしないでください。代わりに、ユーザーのブラウザーのロケールに基づいて時間を設定するため、文字列として渡すだけです。

var datetime = new Date('May 29, 2012 2:52 AM UTC');
var formattedDateTime = dt.toLocaleString();
于 2012-05-29T05:53:14.240 に答える