做网站公司需要什么职位,dooor网站,新津公园城市建设局网站,网站版面如何设计咨询区 Slider345#xff1a;我尝试将 C# 的 DateTime 转为 Unix 时间#xff0c;但是 Unix 统计的是 1970.1.1 到现在的秒数#xff0c;貌似 DateTime 统计的是 0001.1.1 到现在的 ticks 数。我目前能想到的是从现在减去 1970.1.1 从而获取 totalSeconds #xff0c;比如下… 咨询区 Slider345我尝试将 C# 的 DateTime 转为 Unix 时间但是 Unix 统计的是 1970.1.1 到现在的秒数貌似 DateTime 统计的是 0001.1.1 到现在的 ticks 数。我目前能想到的是从现在减去 1970.1.1 从而获取 totalSeconds 比如下面代码TimeSpan span DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0));
return span.TotalSeconds;请问是否有更好的解决办法回答区 Dave Swersky其实这个很好实现我大概有两种解决方案。自己实现将 DateTime 转成 UnixTime。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 之上的话DateTime 提供了一个 UnixEpoch 属性它就表示 1970.1.1。public readonly struct DateTime : IComparable, IComparableDateTime, IConvertible, IEquatableDateTime, IFormattable, ISerializable{//// Summary:// The value of this constant is equivalent to 00:00:00.0000000 UTC, January 1,// 1970, in the Gregorian calendar. System.DateTime.UnixEpoch defines the point// in time when Unix time is equal to 0.public static readonly DateTime UnixEpoch;}codeMonkey如果你运行程序的电脑的时区没有问题的话建议用 DateTimeOffset 替代 DateTime, 这个类下有一个 ToUnixTimeSeconds() 方法就是用来获取 1970-01-01T00:00:00Z 到现在的秒数参考如下代码static void Main(string[] args){long unixSeconds DateTimeOffset.Now.ToUnixTimeSeconds();Console.WriteLine(unixSeconds);}顺便提一下上面这种方式只适合 .NET Framework 4.6 以上的版本如果你的项目版本太低的话那还是需要手工指定一下,比如下面这样。public static void Main(){TimeSpan span DateTime.Now.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc));Console.WriteLine(span.TotalSeconds);}更多细节可参考MSDNhttps://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset.tounixtimeseconds?redirectedfromMSDNviewnet-5.0#System_DateTimeOffset_ToUnixTimeSeconds点评区 记得当年和 PHP 开发的程序对接口时就经常会遇到这种 UnixTime 的问题没想到有这么多解法学习了。