Mono上的DateTime意外行为

Bor*_*ris 4 c# mono datetime 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);
Run Code Online (Sandbox Code Playgroud)

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

设备1:MacBook

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

设备2:Raspberry Pi

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

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

Jus*_*tin 5

我的通灵调试能力告诉我你正在使用"硬浮动"Raspbian(而不是"软浮动".Rasphian默认分配"硬浮动"构建(因为它更快),但Mono目前存在一个错误 " hard float"由浮点数的调用约定引起的发行版.

您的选择是:

  • 使用"软浮动"发行版(即擦拭SD卡并安装Raspbian的"软浮动"版本)
  • 补丁单声道

也可以看看