这里有一个示例代码,但是它开始讨论毫秒/纳秒的问题。
同样的问题出现在MSDN上,从c#的Unix时代开始。
这是我目前得到的:
public Double CreatedEpoch
{
get
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
TimeSpan span = (this.Created.ToLocalTime() - epoch);
return span.TotalSeconds;
}
set
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
this.Created = epoch.AddSeconds(value);
}
}
public static class UnixTime
{
private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0);
public static DateTime UnixTimeToDateTime(double unixTimeStamp)
{
return Epoch.AddSeconds(unixTimeStamp).ToUniversalTime();
}
}
你可以调用UnixTime。UnixTimeToDateTime(双datetime))
. net的最新版本(v4.6)增加了对Unix时间转换的内置支持。这包括以秒或毫秒表示的到Unix时间和从Unix时间。
Unix时间(秒到UTC DateTimeOffset):
DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(1000);
DateTimeOffset到Unix时间(单位:秒):
long unixTimeStampInSeconds = dateTimeOffset.ToUnixTimeSeconds();
Unix时间(单位:毫秒)到UTC DateTimeOffset:
DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(1000000);
DateTimeOffset到Unix时间(单位:毫秒):
long unixTimeStampInMilliseconds = dateTimeOffset.ToUnixTimeMilliseconds();
注意:这些方法转换为UTC DateTimeOffset。要获得一个DateTime表示,只需使用DateTimeOffset。UtcDateTime或DateTimeOffset。LocalDateTime属性:
DateTime dateTime = dateTimeOffset.UtcDateTime;