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

Ear*_*rlz 10 .net c# floating-point datetime unix-timestamp

我需要将DateTime转换为Unix时间戳.所以我用谷歌搜索它寻找一些示例代码

在我看到的几乎所有结果中,它们都double用作这种函数的返回值,即使在显式使用floor它将其转换为整数时也是如此.Unix时间戳总是整数.那么使用long或者int代替双重问题是什么?

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);
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*ate 6

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