我正在使用 .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/