C# Mono上的DateTime行为异常

C# Mono上的DateTime行为异常,c#,datetime,mono,raspberry-pi,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: " + microTimest

考虑以下简单的代码:

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
微时间戳:138686567000000

装置2:树莓皮

现在:735214/00/0001 16:25:14
微时间戳:0


这两个设备都正确设置了日期和时间(我在操作系统的控制面板中检查了这一点)。为什么树莓不能产生正确的结果?

我的心理调试能力告诉我,你使用的是“硬浮点”树莓(与“软浮点”相对)。默认情况下,树莓会分发“硬浮点”构建(速度更快),但目前有一个“硬浮点”版本由于浮点数的调用约定问题而导致的发行版

您的选择是:

  • 使用“软浮动”发行版(即擦拭SD卡并安装Raspbian的“软浮动”版本)
  • 斑贴单核细胞
另见


覆盆子Pi上的当前区域性是什么?这会影响格式设置。
DateTime.UtcNow.Ticks
在每种情况下都有什么作用?暂时不确定,但可能归结为硬件支持与时间有关,不确定RTC元素是否与这些有关……可能相关:Ticks看起来不错。在我的MacBook上:635224634070438680,在Pi上:6352246344158614890如果
DateTime.UtcNow.Ticks
正确,但是
DateTime.UtcNow.ToString()
不是,那么似乎后者在Mono上坏了,因为它已经存在很长一段时间了,我很惊讶还没有人修补它。应该在某个地方有一张公开的票。@Adamhuldsworth有,但它仍然标记为“新”-很显然,修复即将到来,只是在慢慢来。有没有一种简单的方法来执行此修补程序?我能找到的只是一个指向Git Repo的链接,没有说明如何在我的Pi上运行它。此外,我是一个Linux noob:-)@Boris老实说,我也有点好!我可能会说,擦拭SD卡是一件非常困难的事情easier@Boris还有另一个关于RPi问题的网站:你可能会在那里得到更有针对性的帮助。