Kev*_*Kev 11 c# timezone datetime
我有一个从unix纪元时间转换为.NET DateTime值的函数:
public static DateTime FromUnixEpochTime(double unixTime )
{
DateTime d = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return d.AddSeconds(unixTime);
}
Run Code Online (Sandbox Code Playgroud)
我在哪里(英国),时钟在夏季时间前进一小时.
在Python中我使用time.time()(并且为了参数,现在时间是17:15:00)获得本地大纪元时间,这给了我一个值1286122500.
如果我将time.localtime()它转换回人类可读时间,使用它可以像我期望的那样转换回17:15.
如何将unix纪元时间转换回.NET DateTime值和帐户以获取当地夏令时.我上面的函数转换1286122500回16:15,这对我的地理位置不正确.
Dan*_*tru 21
用途DateTime.ToLocalTime():
http://msdn.microsoft.com/en-us/library/system.datetime.tolocaltime.aspx
public static DateTime FromUnixEpochTime(double unixTime)
{
DateTime d = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
d = d.AddSeconds(unixTime);
return d.ToLocalTime();
}
Run Code Online (Sandbox Code Playgroud)
该的TimeZoneInfo类是在帮助一个处理不同的时间和时区很大.它使用Windows内置的时区信息在不同时区之间进行转换.
以下是您如何使用它来解决您的问题:
//Get your unix epoch time into a DateTime object
DateTime unixTime =
new DateTime(1970,1,1,0,0,0, DateTimeKind.Utc).AddSeconds(1286122500);
//Convert to local time
DateTime localTime = TimeZoneInfo.ConvertTime(unixTime, TimeZoneInfo.Local);
Run Code Online (Sandbox Code Playgroud)
TimeZoneInfo.Local返回表示本地时区的TimeZoneInfo.