如何在C#中将Unix 纪元时间转换为实时?(Epoch开始于1970年1月1日)
发布于 2018-08-20 19:54:05
如果你需要将包含的timeval结构(秒,微秒)转换UNIX time
为DateTime
不丢失精度,则执行以下操作:
DateTime _epochTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
private DateTime UnixTimeToDateTime(Timeval unixTime)
{
return _epochTime.AddTicks(
unixTime.Seconds * TimeSpan.TicksPerSecond +
unixTime.Microseconds * TimeSpan.TicksPerMillisecond/1000);
}
发布于 2018-08-20 21:24:17
在最新版本的.NET(V4.6)的用于Unix时间转换只是增加了内置支持。这包括来自Unix时间和来自Unix或毫秒的时间。
DateTimeOffset
:DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(1000);
DateTimeOffset
以秒为单位的Unix时间:long unixTimeStampInSeconds = dateTimeOffset.ToUnixTimeSeconds();
DateTimeOffset
:DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(1000000);
DateTimeOffset
以毫秒为单位的Unix时间:long unixTimeStampInMilliseconds= dateTimeOffset.ToUnixTimeMilliseconds();
注意:这些方法可以转换为DateTimeOffset
。要获得DateTime
表示,只需使用该DateTimeOffset.DateTime
属性:
DateTime dateTime = dateTimeOffset.UtcDateTime;
https://stackoverflow.com/questions/-100002305
复制相似问题