c# - .NET 中是否有 "gettimeofday"的等价物

标签 c#

我正在使用 .NET,但我需要与基于 unix 的日志记录服务进行通信,该服务需要自 Unix 纪元时间以来的秒数和微秒数。可以通过以下方式轻松检索秒数:

DateTime UnixEpoch = new DateTime(1970, 1, 1);
TimeSpan time = DateTime.UtcNow() - UnixEpoch
int seconds = (int) time.TotalSeconds

但是,我不确定如何计算微秒。我可以使用 TotalMilliseconds 属性并将其转换为微秒,但我认为这违背了使用微秒作为精确测量的目的。我已经研究过使用 StopWatch 类,但似乎我无法用时间为它播种(例如 Unix Epoch)。

谢谢。

最佳答案

使用 Ticks属性以获得最细粒度的详细信息。一个滴答是 100ns,所以除以 10 得到微秒。

但是,这讨论的是表示精度 - 它根本没有讨论准确性。考虑到 DateTime.UtcNow 的粗粒度,我不希望它特别有用。参见 Eric Lippert 的 blog post about the difference between precision and accuracy获取更多信息。

您可能想在已知时间启动秒表,基本上将它的时间添加到“起点”。请注意,Stopwatch 中的“ticks”与 TimeSpan.Ticks 的含义不同。

关于c# - .NET 中是否有 "gettimeofday"的等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4856659/

相关文章:

c# - Visual Studio : Exclude Project by default when running tests from test explorer

c# - 没有超时的异步 web 方法

c# - 计算数组的频率分布?

c# - IEnumerable 在底层与 IObservable 有何不同?

c# - 为什么我的 Dictionary 类看不到 ToArray() 方法?

c# - 如何从 xelement 中提取 cdata 的值?

c# - 在 C# 中使用非常低的内存显示大量图像?

c# - Dataset 到数据集中的每个元素

c# - 如何仅通过 Win32 API 实现 .NET Process.Exited 事件

c# - .Net Core 中的通用存储库模式与 Entity Framework 的相关性是什么