1

我的客户端应用程序通过 WebService 从远程服务器接收数据。该应用程序基本上是用 1.1 框架 Windows 窗体编写的。

我要做的就是将我的客户端应用程序时区设置为服务器时区,这样就可以避免任何与日期时间相关的差异。

为此,我想知道如何检索服务器时区以及如何将客户端时区设置为等于服务器。

4

4 回答 4

1

我不知道您的问题到底是什么,我们在我们的应用程序中遇到了类似的问题。在不同时区从服务器向客户端发送日期时间时,当客户端收到日期时间时,它可以将其转换为本地时间。我在 .net 1.1 中找不到解决方案。但在 .Net 2.0 及以后的版本中,DateTime 有一个名为Kind的属性,如果您将其值设置为Unspecified,则客户端不会将其从服务器接收到的时间转换为本地时间。

于 2009-02-05T21:23:09.050 回答
1

如果您在双方都使用 UTC,则无需担心偏移量不同。为了在您的应用程序中显示,您可以将 UTC 日期转换为本地时间。

于 2009-01-09T04:26:29.137 回答
0

大卫,

我认为最初的问题是从服务器获取 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));

时区信息类

于 2009-12-03T15:07:50.893 回答