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

gru*_*ber 3 .net c# 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;
}
Run Code Online (Sandbox Code Playgroud)

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

Dar*_*rer 9

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

DateTime.UtcNow.Dump();
TimeZoneInfo.ConvertTime(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time")).Dump();
Run Code Online (Sandbox Code Playgroud)

输出:

17/12/2013 09:11:08
17/12/2013 13:11:08
Run Code Online (Sandbox Code Playgroud)

微软刚刚发布了一个更新,以适应俄罗斯DST法律的变化,你显然没有它.

*Dump()是LINQPad提供的扩展方法.相当于Console.WriteLine(<...>.ToString())


Ale*_*lex 2

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

据我所知,目前你能做的就是+1时间。

当然,您也可以使用某些网络时间服务并从中请求时间。