如何从
Stopwatch.GetTimestamp()
转到 DateTime
?
假设
Stopwatch.IsHighResolution
为真。
如果它是高分辨率计数器,则不能保证该值与实时有任何相关性 - 例如,它很可能是“自计算机启动以来的滴答声”。对于非高分辨率计时器,您可以使用
new DateTime(Stopwatch.GetTimestamp())
,但这不一定能为高分辨率计时器提供有用的值。 (我的盒子上肯定没有。)
你想用这个做什么?
Stopwatch
的想法是测量时间的间隔。
请记住,如果您想跟踪经过的时间,您应该使用:
Stopwatch sw = Stopwatch.StartNew();
//do stuff
sw.Elapsed; //or
sw.ElapsedMilliseconds;
这可以准确地将价格变动转换为实时。将刻度转换为日期时间,然后比较日期时间也可以,但上面的方法更简单。
有些人(包括我自己)错误地使用了这样的代码,并从中得到了不好的时光:
startTime = Stopwatch.GetTimestamp();
totalTime = (Stopwatch.GetTimestamp() - startTime) / 10000;
//it was assumed 10,000 ticks was a millisecond, incorrectly