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

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

我需要将日期时间转换为 Unix 时间戳。所以我googled它正在寻找一些示例代码

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

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);
}

最佳答案

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

关于c# - 为什么 DateTime 到 Unix 时间使用 double 而不是整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5206880/

相关文章:

.net - 如何使用 .NET 控制 xml 序列化的 <?xml ?> 部分?

mysql - 找出日期之间的差异

javascript - 如何从 JSON 存储创建 JavaScript 日期对象?

c# - 为什么我不能在匿名方法中的while循环中使用break?

javascript - 如何将 C# 变量的值分配给 asp.net 中更新面板内的 javascript 变量

c# - Windows Phone 8中BitmapImage/Image控件的内存消耗

java - 如何将日期时间从一个时区转换为另一个时区

c# - 使用 using 或项目名称调用项目

c# - 如何在 C# 中连接整数和字符串?

.net - 当只有一个元素存在时,锯齿状的PowerShell数组将丢失尺寸