使用c#查找当前的莫斯科时间

时间:2013-12-17 09:02:01

标签: c# .net timezone

我正试图在我的.NET应用程序中获取莫斯科当地时间。

这是我走了多远:

private static Dictionary<TimeZoneEnum, string> timeZoneDict = new Dictionary<TimeZoneEnum, string>()
{
    {TimeZoneEnum.RussiaStandardTime, "Russian Standard Time"}
};

public static DateTime GetDateTimeNowForTimeZone(TimeZoneEnum timezone)
{
    DateTime result = TimeZoneInfo.ConvertTime(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById(timeZoneDict[timezone]));
    return result;
}

方法GetDateTimeNowForTimeZone给我GMT + 3次,但现在俄罗斯有GMT + 4次。 有没有办法在.net框架中为此问题获得可靠的解决方案?

2 个答案:

答案 0 :(得分:9)

您需要修补系统。在我的系统(安装了所有更新的Windows 7)上,它给出了正确的时间:

DateTime.UtcNow.Dump();
TimeZoneInfo.ConvertTime(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time")).Dump();

输出:

17/12/2013 09:11:08
17/12/2013 13:11:08

微软刚刚发布an update以适应俄罗斯DST法律的变化,你显然没有。

* Dump()是LINQPad提供的扩展方法。相当于Console.WriteLine(&lt; ...&gt; .ToString())

答案 1 :(得分:2)

我认为这个问题将通过微软的补丁解决。他们会定期更新时区。

据我所知,你所能做的只是+1时间。

当然,你也可以走一些网络时间服务的路径并从中请求时间。