DateTime.nowを使用して時計を構築し、サーバーからタイムゾーンを受信します。 問題は、DateTimeが古いタイムゾーンを使用し続けることです。DateTime.nowはタイムゾーンの変更に応答しません
(私は再起動せずに受信したとき、それは新しいタイムゾーン設定を使用して開始したい)
私はこの問題を回避するにはどうすればよいですか?
DateTime.nowを使用して時計を構築し、サーバーからタイムゾーンを受信します。 問題は、DateTimeが古いタイムゾーンを使用し続けることです。DateTime.nowはタイムゾーンの変更に応答しません
(私は再起動せずに受信したとき、それは新しいタイムゾーン設定を使用して開始したい)
私はこの問題を回避するにはどうすればよいですか?
DateTimeの代わりにTimeZoneクラスを使用してみましたか?私はそれが違いをもたらすが、見て価値があるかどうかはわかりません。
DateTime baseUTC = new DateTime(2000, 1, 1);
TimeZone localZone = TimeZone.CurrentTimeZone;
DateTime localTime = localZone.ToLocalTime(baseUTC);
あなたが希望の時間帯に変換現在の現地時間にする必要があります。このようなもの:
var timeInServerTimezone = TimeZoneInfo.ConvertTime(DateTime.Now, timeZoneInfoReceivedFromServer);
時間を変更した後、タイムキャッシュをクリアする必要があります。詳細については
TimeZoneInfo.ClearCachedData()
: は、次のコマンドを使用し http://www.c-sharpcorner.com/Forums/Thread/240283/datetime-is-not-reflected-instantly-when-time-zone-changes.aspx
はどのようにして、「サーバーからのタイムゾーンを受けます」か? TimeZoneInfoオブジェクトを取得していますか、またはローカルタイムゾーンに設定されているローカルマシンですか? – RQDQ
DateTimeはシステムの現在の時刻を一定の精度で表すためです。それは他に何も表していません。このサイトの尊敬されているメンバーによるプロジェクトがあります。それはDateTimeを延長しようとしていることです。私はNoda Timeと呼ばれています。 –