【问题标题】:calculate number ticks from outside of the .net framework从 .net 框架之外计算数字刻度
【发布时间】:2016-09-30 12:12:12
【问题描述】:

有谁知道如何从 .net 框架之外计算 .net 时间滴答数?我的情况涉及Linux(我这边)上的python脚本需要发送时间戳作为发往C#进程(另一方,无法更改其代码)的消息中的滴答数。我找不到任何这样做的图书馆......有什么想法吗?谢谢!

【问题讨论】:

  • Environment.TickCount 是自 Windows 启动以来的毫秒数。 Linux 提供了您可以使用的/proc/uptime。但是,您究竟将如何协调这两种不同的系统正常运行时间呢?似乎没有多大意义...
  • 我指的是代表 C# Datetime 对象的刻度,因此刻度对应于自 01/01/01 00:00:00 日期以来的 100ns“刻度”数。这可以与 1970 年 1 月 1 日为零的 Unix 时间相协调,但是由于 1500 年代或其他时间(儒略到公历)中日历等的变化,我不确定应该如何正确处理它 - 所以我我希望某个地方有一个图书馆可以解决所有这些问题。

标签: c# python .net timestamp


【解决方案1】:

您可以轻松地确定 Unix/Linux 纪元 (1970-01-01 00:00:00) 在 DateTime 滴答声中是什么:

DateTime netTime = new DateTime(1970, 1, 1, 0, 0, 0);
Console.WriteLine(netTime.Ticks);
// Prints 621355968000000000

由于 Unix/Linux 时间戳是自 1970-01-01 00:00:00 以来的秒数,您可以通过将其乘以 10000000 将其转换为 100ns 刻度,然后通过添加将其转换为 DateTime 刻度621355968000000000:

long netTicks = 621355968000000000L + 10000000L * linuxTimestamp;

【讨论】:

猜你喜欢
  • 2018-04-21
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多