0

クライアント側からサーバーに日時を送信します。カリフォルニア時間の午後 1 時としましょう。このデータの送信時に、時間を解析し、次のように UTC に変換します。

DateTime.SpecifyKind(DateTime.ParseExact(model.SessionStart, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture).ToUniversalTime(), DateTimeKind.Utc);

現在の時刻よりも短いこれらの日付をチェックするタイマージョブを同じサーバーで実行しているため、セッションの開始時刻が適切な時刻になったときにコードが実行されます。

これらすべての時間をサーバーと同期させて、誰かがカリフォルニアまたはニューヨークから送信した場合にすべてが適切に変換され、タイマージョブが正しく実行されるようにするにはどうすればよいですか?

4

1 に答える 1

1

オークションのより良いアプローチは、クライアントがサーバーの開始時刻と終了時刻を UTC で送信できるようにし、サーバー タイマーが現在の Utc 時刻をオークションの開始/終了時刻と比較できるようにすることだと思います。ここでは、サーバーの現地時間を使用する必要はまったくありません。

使用する唯一の現地時間は、クライアントの表示です。サーバーおよびサーバー内での処理は、常に UTC のみで行う必要があります。

また、時間の同期に関しては、John Skeet がここで提案しているように、NODA 時間のようなものを使用できます: アプリケーションの時間を外部サーバーの時間と同期させる最良の方法は?

于 2013-03-11T20:34:02.117 に答える