Mono上的DateTime意外行为

时间:2013-12-12 16:32:39

标签: c# datetime mono raspberry-pi

考虑以下简单的代码:

TimeSpan ts = (DateTime.UtcNow - new DateTime(1970, 1, 1));
UInt64 microTimestamp = (Convert.ToUInt64(ts.TotalSeconds))*1000000;

Console.WriteLine ("Now: " + DateTime.UtcNow.ToString());
Console.WriteLine ("Microtimestamp: " + microTimestamp);

我已经将它编译为exe并在两台机器上执行它:

设备1:MacBook

  

现在:12.12.2013 16:26:57
  Microtimestamp:1386865617000000

设备2:Raspberry Pi

  

现在:735214/00/0001 16:25:14
  Microtimestamp:0

两个设备都正确设置了日期和时间(我在操作系统的控制面板中检查过)。为什么Raspberry没有产生正确的结果?

1 个答案:

答案 0 :(得分:5)

我的通灵调试能力告诉我你正在使用“硬浮动”Raspbian(而不是“软浮动”.Rasphian默认分配“硬浮动”构建(因为它更快),但目前有{{ 3}}关于浮点数调用约定问题引起的“硬浮点”发行版。

您的选择是:

  • 使用“软浮动”发行版(即擦拭SD卡并安装Raspbian的“软浮动”版本)
  • Patch Mono

另见