我正试图在我的.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框架中为此问题获得可靠的解决方案?
您需要修补系统.在我的系统(安装了所有更新的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())
| 归档时间: |
|
| 查看次数: |
2361 次 |
| 最近记录: |