我的猜测是距离特定纪元(很可能是 1970 年 1 月 1 日午夜 UTC 的 Unix 纪元)将是毫秒或秒。
所以代码看起来像:
private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0,
DateTimeKind.Utc);
public static DateTime FromMillisecondsSinceUnixEpoch(long milliseconds)
{
return UnixEpoch.AddMilliseconds(milliseconds);
}
在几秒钟内做出明显的改变,或者从不同的时代:)
另一种方法是创建一个自纪元以来的秒/毫秒的TimeSpan,然后将其添加到纪元:
private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0,
DateTimeKind.Utc);
public static DateTime FromMillisecondsSinceUnixEpoch(long milliseconds)
{
return UnixEpoch + TimeSpan.FromMilliseconds(milliseconds);
}
我不知道它们之间有什么显着差异——尽管AddMilliseconds 采用double 而不是long 这一事实表明,对于非常大的值,TimeSpan 方法可能更可取。我怀疑它会有所作为:)