c# – DateTime的默认时间精度是多少?
发布时间:2020-12-16 02:02:56 所属栏目:百科 来源:网络整理
导读:我在Visual Studio中为数据传输做了一个小的winform程序,我使用了一种方法来提供传输持续时间.传输完成后,程序将返回一个对话窗口以显示时间. 但是在这里我不知道时间精度或定时器的分辨率是多少,它怎么能是如此精确,甚至是微秒? var startTime = DateTime.
我在Visual Studio中为数据传输做了一个小的winform程序,我使用了一种方法来提供传输持续时间.传输完成后,程序将返回一个对话窗口以显示时间.
但是在这里我不知道时间精度或定时器的分辨率是多少,它怎么能是如此精确,甚至是微秒? var startTime = DateTime.Now; this.transferdata(); var endTime = DateTime.Now; var timeElapsed = endTime.Subtract(startTime); 当我看到类DateTime的定义时,只有精度以毫秒为单位.任何人都可以告诉我为什么在visual studio 2012中有这么高分辨率的计时器?还是与操作系统有关? 解决方法
时钟的精度取决于操作系统.系统时钟每秒记录一定次数,您只能测量整个刻度.
您可以使用以下代码测试特定计算机的分辨率: DateTime t1 = DateTime.Now; DateTime t2; while ((t2 = DateTime.Now) == t1) ; Console.WriteLine(t2 - t1); 在我的计算机上,结果是00:00:00.0156253,这意味着系统时钟每秒滴答64次. (注意:DateTime类型也有刻度,但这与系统时钟刻度不同.DateTime刻度是1/10000000秒.) 要更准确地测量时间,您应该使用秒表类.它的分辨率还取决于系统,但远高于系统时钟.您可以从Stopwatch.Frequency属性中获取分辨率,并在我的计算机上返回2143566,这是一个超过64 … 在工作之前启动秒表并在之后停止,然后获取经过的时间: Stopwatch time = Stopwatch.StartNew(); this.transferdata(); time.Stop(); TimeSpan timeElapsed = time.Elapsed; 这将返回TimeSpan类型可以处理的分辨率中的时间,例如1/10000000秒.您还可以根据刻度数计算时间: double timeElapsed = (double)s.ElapsedTicks / (double)Stopwatch.Frequency; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |