【问题标题】:DateTime on Mono behaves unexpectedlyMono 上的 DateTime 行为异常
【发布时间】:2013-12-12 16:32:38
【问题描述】:

考虑以下简单的代码:

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

设备 2:树莓派

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

两台设备的日期和时间都已正确设置(我在操作系统的控制面板中进行了检查)。为什么 Raspberry 不能产生正确的结果?

【问题讨论】:

  • 目前 Raspberry Pi 的文化是什么?这会影响格式。 DateTime.UtcNow.Ticks 在每种情况下都给出了什么?
  • 不确定,但它可能归结为与时间有关的硬件支持,不确定 RTC 元素是否与这些有关...
  • 蜱看起来不错。在我的 MacBook 上:635224634070438680,在 Pi 上:635224634158614890
  • 如果DateTime.UtcNow.Ticks 是正确的,但DateTime.UtcNow.ToString() 不是,那么后者似乎在Pi 上的Mono 上被破坏了

标签: c# datetime mono raspberry-pi


【解决方案1】:

我的心理调试能力告诉我,您使用的是“硬浮动”Raspbian(而不是“软浮动”。Rasphian 默认分发“硬浮动”构建(因为它更快),但目前有一个 @987654321 @ 在由浮点数调用约定问题引起的“硬浮点”发行版上。

您的选择是:

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

另见

【讨论】:

  • 这已经存在很长时间了,我很惊讶还没有人修补它。在某个地方应该有一张公开的票。
  • @AdamHouldsworth 有 one here,但它仍被标记为“新” - 显然修复即将到来,它只是度过了美好的时光
  • 有没有简单的方法来执行这个补丁?我能找到的只是一个 Git-Repo 的链接,没有说明如何在我的 Pi 上运行它。我也是 Linux 菜鸟 :-)
  • @Boris 老实说,我有点过分了!我可能会说擦除 SD 卡更容易
  • @Boris 还有一个 RPi 问题的网站:raspberrypi.stackexchange.com 你可能会在那里得到更有针对性的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
  • 2015-07-31
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多