
有这个示例代码,但它开始谈论毫秒/纳秒问题。
同样的问题在MSDN上, Seconds since
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 DateTime UnixTimeStampToDateTime( double unixTimeStamp )
{
// Unix timestamp is seconds past epoch
System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
return dtDateTime;
}
或者,对于Java(这是不同的,因为时间戳以毫秒为单位,而不是秒):
public static DateTime JavaTimeStampToDateTime( double javaTimeStamp )
{
// Java timestamp is milliseconds past epoch
System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddMilliseconds( javaTimeStamp ).ToLocalTime();
return dtDateTime;
}
已添加最新版本的.NET(v4.6)内置的Unix时间转换支持。这包括来自Unix时间和以秒或毫秒表示的时间。
- 在
DateTimeOffset:
的几秒钟内的Unix时间
DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(1000);
DateTimeOffset转换为Unix时间(秒):
long unixTimeStampInSeconds = dateTimeOffset.ToUnixTimeSeconds();
- Unix时间(以毫秒为单位)到
DateTimeOffset:
DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(1000000);
DateTimeOffset转换为Unix时间(毫秒):
long unixTimeStampInMilliseconds= dateTimeOffset.ToUnixTimeMilliseconds();
注意:这些方法可以转换成DateTimeOffset和DateTimeOffset。要获取DateTime表示,只需使用DateTimeOffset.DateTime属性:
DateTime dateTime = dateTimeOffset.UtcDateTime;
未经作者同意,本文严禁转载,违者必究!




近期评论