0
  • Visual Studio 2008、c#、.net 2.0 を使用。

スケジュール UI セクションを含む Windows フォーム クライアント アプリケーションがあります。現在、これは標準の日時ピッカー コントロールを備えたロンドン オフィスにのみ収容されており、選択された時刻は英国のデータベース (GMT) に保存され、ロンドン ベースのサーバー アプリケーションが処理します。スケジュール。

香港、ニューヨークなどのさまざまなグローバルな場所にクライアントを展開し、ロンドン サーバーで GMT 時間に従って実行されるスケジュールをセットアップできるようにする必要があります。

画面に「スケジュールは GMTであることに注意してください」というラベルが表示されます。必要なのは、クライアント アプリがグローバルに実行されている場所に関係なく、データベース サーバーの GMT 時刻を常に表示して同期する日時ピッカーを表示する良い方法です

これを達成する方法に関する提案はありますか? ありがとう。

4

3 に答える 3

2

「GMT」タイムゾーンはあいまいです。Windows では、ロンドンなどのタイムゾーンを指し、夏時間調整が含まれます。王立天文台のグリニッジでは、DST 調整なしで UTC に一致するタイムゾーンを指します。

明らかに、この種の起こりうる混乱を避けたいと思うでしょう。また、ユーザーに自分で変換を依頼すると、多くの間違いが発生します。これを行う唯一の良い方法は、ユーザーがローカル タイムゾーンで時刻を入力できるようにすることです。それをすぐにUTCに変換し、サーバーに送信します。サーバーから戻ってくるものはすべて、表示の直前に、可能な限り最後の瞬間にローカル時間に戻す必要があります。

于 2010-03-15T19:33:21.460 に答える
1

DateTime オブジェクトには、.GetUTCXXX() を使用して現地時間から UTC/GMT 時間にオフセットする機能があります。これは、ランタイムで使用されている現在のグローバリゼーション/ローカリゼーション設定に基づいて、現地時間インスタンスから UTC オフセットに変換されます。

さらに、Globalization.CultureInfo には Timezone オブジェクトがあり、UTC/GMT 時間をローカル時間に調整するためにも使用できます。

サーバーに接続できる場合は、サーバーで現地時間を取得し、その方法で日付ピッカーを更新できますが、スケジュールの「おおよその」時間だけが必要で、そのレベルの精度は必要ない場合、これはやり過ぎかもしれません。

于 2010-03-15T18:39:41.140 に答える
0

これで問題が解決するかどうかはわかりませんが、Any+Time(TM) JavaScript Libraryを確認してください。Date/Time ウィジェットに関する部分は飛ばして、AnyTime.Converter に関する情報を探してください。AnyTime.Converter は、文字列を Date オブジェクトに変換して戻すオブジェクトです。UTC Offsets/TimeZones の形式指定子と、現地時間をオーバーライドするオプションが含まれるようになりました ( utcFormatOffsetImposed と utcParseOffsetAssumed のオプションを含むUTC Offsets のドキュメント セクションを確認してください)。次のセクションには、現地時間を取得して GMT で表示する方法を説明する例もあります。質問や問題がある場合は、連絡先ページから送信してください。これが役立つことを願っています!

于 2010-04-24T04:54:04.750 に答える