我正在尝试将 C# DateTime 变量转换为 Unix 时间,即自 1970 年 1 月 1 日以来的秒数。看起来 DateTime 实际上是作为自 0001 年 1 月 1 日以来的“刻度”数来实现的。
我目前的想法是从我的 DateTime 中减去 1970 年 1 月 1 日,如下所示:
TimeSpan span= DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0));
return span.TotalSeconds;
有没有更好的办法?
基本上就是这样。这些是我用来与 Unix 纪元时间相互转换的方法:
public static DateTime ConvertFromUnixTimestamp(double timestamp)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
return origin.AddSeconds(timestamp);
}
public static double ConvertToUnixTimestamp(DateTime date)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan diff = date.ToUniversalTime() - origin;
return Math.Floor(diff.TotalSeconds);
}
更新:从 .Net Core 2.1 和 .Net Standard 2.1 开始,可以从静态获取等于 Unix Epoch 的 DateTimeDateTime.UnixEpoch
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)