1

クライアントアプリケーションは、リモートサーバーからWebサービスを介してデータを受信します。アプリケーションは基本的に1.1フレームワークのWindowsフォームで書かれています。

私がやりたいのは、クライアントアプリのTimeZoneをサーバーのTimeZoneに設定して、日時に関連する不一致を回避できるようにすることです。

このために、サーバーのタイムゾーンを取得する方法とクライアントのタイムゾーンをサーバーに設定する方法を知りたいです。

4

4 に答える 4

1

両側で UTC を使用する場合、オフセットが異なることを心配する必要はありません。アプリケーションで表示するために、UTC 日付を現地時間に変換できます。

于 2009-01-09T04:26:29.137 に答える
1

あなたの問題が正確に何であるかはわかりませんが、私たちのアプリで同様の問題がありました. 異なるタイムゾーンでサーバーからクライアントに日時を送信する場合、クライアントが日時を受信すると、それを現地時間に変換できます。.net 1.1 でこれに対する解決策を見つけることができませんでした。しかし、.Net 2.0 以降では、DateTime にはKindというプロパティがあり、その値をUnspecifiedに設定すると、クライアントはサーバーから受信した時刻をローカル時刻に変換しません。

于 2009-02-05T21:23:09.050 に答える
0

デビッド、

元の質問は、サーバーから TimeZone 情報を取得することだと思います。サーバーとクライアントを同じゾーンに保つために TimeZOne 情報を取得する必要がある場合があります。

たとえば、デバイスをローカル サーバーと同期する別の場所に移動する場合、サーバーと同期するデバイスがある場合、デバイスのタイムゾーン情報をローカル サーバーのタイムゾーンに設定することができます。

この状況では、クライアントの TimeZone をサーバーのタイムゾーンに設定することが非常に重要です。そうしないと、クライアントは異なる/元のタイムゾーンの時間を表示します。

「DHCP オプション」、「NTP サーバー」などのオプションを検討できると思いますが、この問題の正確な解決策はわかりません。

于 2009-02-05T21:13:14.390 に答える
0

.NET Framework 3.5 を使用している場合は、TimeZoneInfo クラスを使用してタイム ゾーン情報を取得できます...

// Get time in local time zone 
DateTime thisTime = DateTime.Now;
Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(thisTime) ?
                  TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName, thisTime);
Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local));
// Get Tokyo Standard Time zone
TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);      
Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(tstTime) ?
                  tst.DaylightName : tst.StandardName, tstTime);
Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst));

TimeZoneInfo クラス

于 2009-12-03T15:07:50.893 に答える