如何设置客户端时区等于服务器时区窗口App .Net C#

时间:2009-01-09 04:04:28

标签: c# .net windows timezone

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

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

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

大卫,

我认为最初的问题是从服务器获取TimeZone信息。我有时看到你需要获取TimeZOne信息以保持服务器和客户端在同一区域。

例如,如果您将设备与服务器同步,如果您将deviec带到同步本地服务器的不同位置,则可能需要将设备时区信息设置为本地服务器时区。

在这种情况下,将客户端TimeZone设置为服务器时区非常重要,否则客户端会显示不同/原始时区的时间。

我认为您可以考虑“DHCP选项”,“NTP服务器”等选项,但我不知道这个问题的确切解决方案。

答案 3 :(得分: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 class