如何获得准确的时间而不是DateTime.Now.TimeOfDay?

时间:2012-02-17 12:11:26

标签: c# datetime

我希望以下列格式获得准确的当前时间: HH:MM:SS:MMM

HH - 小时

MM - 分钟

SS - 秒

mmm - 毫秒

据我所知DateTime.Now不够准确,StopWatch仅用于测量时间。 我希望得到1毫秒的准确度。

4 个答案:

答案 0 :(得分:3)

您遇到的问题是DateTime为您提供了非常精确的时间结果,但它的准确性受系统硬件时钟和操作系统响应时间请求的速度的控制。

精确度和准确度可能看起来是一样的,但它们不是。您可以将测量值降至十亿分之一米,但如果您的测量设备长度为1米而没有刻度,那么您的精度只有1米。

如果你确实需要一个精确的时间到1毫秒,那么你将需要另一个你可以直接轮询的时间源,从而绕过任何操作系统延迟。

可以获得允许连接到实时时钟的设备,例如gps接收器(高度准确)。两个接收器之间的精度再次取决于它们与卫星的距离是否相同。

答案 1 :(得分:1)

嗯,resolution of DateTime实际上降到了100纳秒的分辨率(即使分辨率可能会被实现限制为更少),毫秒分辨率应该不是问题。

解决问题所需的所有属性均以普通DateTime类型提供。

编辑:正如@CodeInChaos指出的那样,使用这个API甚至无法保证毫秒级的分辨率,所以如果你真的需要这个分辨率,那就不好了: - /

答案 2 :(得分:0)

DateTime.Now的分辨率为10毫秒 http://msdn.microsoft.com/en-us/library/system.datetime.now.aspx

哪种准确的分辨率适合您?

答案 3 :(得分:0)

Windows多媒体计时器timeGetTime()

粒度:1毫秒 精度:1毫秒 表观精度:2.32804262366679e-006秒 表观抖动:1.19727906360006e-007秒

摘自here