从datetime转换为unix毫秒

时间:2014-09-01 07:27:16

标签: c#

我得到了将UNIX时间转换为DaTime的功能,无论如何我现在需要将函数从DateTime转换为UNIX时间戳,但这有点不对,因为当我以某种方式传递DateTime时,最后3位数字没有显示实例我有这个时间戳:“1300124700345”,它等于:14.03.2011 5:45 PM。当我把它传递给我的函数时,我正在检索:“1300124700” - 最后3位数字被淘汰。

static readonly DateTime UnixEpoch = 
       new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);

public static long ToUnixTime(DateTime date)
{
    return Convert.ToInt64((date - UnixEpoch).TotalSeconds);
}

2 个答案:

答案 0 :(得分:0)

Unix计算自1970年1月1日以来的秒数。你的功能是正确的,它正在返回TotalSeconds

1300124700345秒大约是40000年,这是错误的。

答案 1 :(得分:0)

另外,您可以查看此页面:Epoch converter,它将为您提供一种测试数据的简便方法。

在此:epoch on wikipedia阅读一些关于它的行为和准确程度的有趣内容。

并使用此:

var epoch = (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;

得到你想要的东西。