我正在尝试将DateTime
转换为Unix时间戳。
static long ToUnixTime(DateTime dateTime)
{
var dateTimeOffset = new DateTimeOffset(dateTime);
return dateTimeOffset.ToUnixTimeSeconds();
}
但是这个函数总是返回时间戳等于“Sun Jan 18 1970”而不是当前的DateTime。这有什么问题?
答案 0 :(得分:2)
表示为Unix时间戳的当前日期为1501093539,或多或少。
我认为你自己错了;如果我编辑我的代码以添加毫秒,我得到1/18/1970
。但是unix时间不是毫秒。他们在秒。
var dt = DateTime.Now;
var offset = new DateTimeOffset(dt);
var unix = offset.ToUnixTimeSeconds();
dt = new DateTime(1970,1,1,0,0,0);
dt = dt.AddSeconds(unix);
Debug.WriteLine(dt); // gives current date back
将其更改为AddSeconds
,您将获得当前日期。将其更改为AddMilliseconds
,您将获得1970年1月18日。您的代码实际上很好。
答案 1 :(得分:1)
这里有一些代码可以为你提供任何版本的框架的
的Unix时间戳public static class UnixDateTime
{
private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
public static long GetUnixTimestamp(this DateTime input)
{
return (long)(input - UnixEpoch).TotalSeconds;
}
}
然后只使用扩展方法
var unixTimeStamp = DateTime.Now.GetUnixTimestamp();