为什么DateTime到Unix时间使用double而不是整数?

时间:2011-03-05 21:24:16

标签: c# .net datetime floating-point unix-timestamp

我需要将DateTime转换为Unix时间戳。所以我googled寻找一些示例代码

在我看到的几乎所有结果中,他们使用double作为此类函数的返回,即使明确使用floor将其转换为整数也是如此。 Unix时间戳总是整数。那么使用longint而不是双倍的问题是什么?

static double ConvertToUnixTimestamp(DateTime date)
{
    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    TimeSpan diff = date - origin;
    return Math.Floor(diff.TotalSeconds);
}

4 个答案:

答案 0 :(得分:4)

通常,我会使用unsigned long实现它,而不是要求用户向上或向下舍入并转换为int或long。有人可能想要双重的一个原因是,如果使用类似于timeval的结构,例如在gettimeofday中。它允许亚秒级精度......

答案 1 :(得分:3)

避免32位系统上的2038错误?

答案 2 :(得分:1)

双重覆盖了int类型中的任何其他变量。

答案 3 :(得分:-1)

这不是"年"的问题。但在合理的机器上工作了几个小时,联系紧密。

但你能想象整理庞大的存储吗?我有大约30TB的数据,它淹没了我 - 我花的时间比实际工作更多。

祝你好运