帮助:我有一台服务器,有时间在格林威治标准时间-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分钟以获得服务器时间。我需要从服务器时间获取当地时间。它怎么能实现?请建议我一些解决方案..提前感谢您的答案
答案 0 :(得分:12)
无需了解服务器时区。如果服务器时间设置正确,您可以尝试:
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;
答案 1 :(得分:1)
如果您希望在服务器时间内添加12小时30分钟以获得等效的本地时间(假设您有服务器时间),则可以使用AddHours()
和AddMinutes()
功能添加12:30小时
试试这个:
DateTime dt= /*your server time*/;
dt=dt.AddHours(12);
dt=dt.AddMinutes(30);
答案 2 :(得分:0)
所以你有服务器的时间,你知道服务器的时区吗?然后你就可以得到这样的当地时间:
//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
答案 3 :(得分:0)
如果您的服务器时钟设置正确(无论时区如何),那么您自己代码的前三行是完全正确的。 result
变量包含印度时区的当地时间。
只需省略最后两行。
答案 4 :(得分:0)
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
答案 5 :(得分:0)
获取服务器UTC日期和时间的最简单方法是(SELECT GETUTCDATE();)。试试吧。