从服务器获取当前日期时间并将其转换为c#中的本地时间

帮助:我有一台服务器,有时间在格林威治标准时间-07.00小时。 我当地时间是格林威治标准时间+05.30。 我需要从服务器获取当前日期和时间,并将此日期和时间转换为我当地时间。 我尝试了很多代码,但仍未找到连续的方法。 有人可以帮帮我。

string zoneId = "India Standard Time"; TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(zoneId); DateTime result = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi); DateTime cu = result.ToUniversalTime(); DateTime cur = cu.ToLocalTime(); 

我已经尝试了上述所有方法,但仍然没有得到正确的答案。 假设我当前的当地时间是2014年3月9日下午12:51:00,那么我的服务器时间将是12.30小时,与当地时间不同,即从当地时间减去12小时30分钟以获得服务器时间。 我需要从服务器时间获取当地时间。 它怎么能实现? 请建议我一些解决方案..提前感谢您的答案

无需了解服务器时区。 如果服务器时间设置正确,您可以尝试这样做:

 DateTime serverTime = DateTime.Now; // gives you current Time in server timeZone DateTime utcTime = serverTime.ToUniversalTime(); // convert it to Utc using timezone setting of server computer TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, tzi); // convert from utc to local 

要在本地检查它,请更改您的计算机时区以匹配您的服务器。 然后运行代码。 我检查一下,它工作正常。

更新:

前两行可以混合成一行,如下所示。 性能更好:

 DateTime utcTime = DateTime.UtcNow; 

如果你想在你的服务器时间增加12小时30分钟以获得等效的本地时间(假设你有服务器时间),你可以使用AddHours()AddMinutes()函数来添加12:30小时

试试这个:

 DateTime dt= /*your server time*/; dt=dt.AddHours(12); dt=dt.AddMinutes(30); 

所以你有服务器的时间,你知道服务器的时区吗? 然后你就可以得到这样的当地时间:

 //Server: 09-Mar-2014 11:00:00 AM: var serverTime = new DateTime(2014, 3, 9, 11, 00, 00); var serverZone = TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time"); var localZone = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); var localTime = TimeZoneInfo.ConvertTime(serverTime, serverZone, localZone); // => 09-Mar-2014 11:30:00 PM 

如果您的服务器时钟设置正确(无论时区如何),那么您自己代码的前三行完全正确。 result变量包含印度时区的当地时间。

只需省略最后两行。

  DateTime serverTime = DateTime.Now; DateTime utcTime = serverTime.ToUniversalTime(); // convert it to Utc using timezone setting of server computer TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, tzi); // convert from utc to local