我正在编写一个程序,其中我需要获取以毫秒为单位的时间。所谓时间,我指的是一个永远不会等于它自己的数字,而且总是比一秒前大1000个数字。我曾尝试将DateTime.Now
转换为TimeSpan
,并从中获取TotalMilliseconds
...但我听说它并不完全准确。
有没有更简单的方法来做这件事?
发布于 2010-10-26 00:07:05
long milliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
这实际上是各种Unix转换方法在DateTimeOffset
类(.NET框架4.6+、.NET标准1.3+)中的实现方式:
long milliseconds = DateTimeOffset.Now.ToUnixTimeMilliseconds();
发布于 2010-10-26 00:05:25
DateTime.Ticks
属性获取表示日期和时间的刻度数。
10,000滴答是一毫秒(每秒10,000,000滴答)。
发布于 2010-10-26 00:06:32
您可以尝试使用QueryPerformanceCounter
原生方法。有关详细信息,请参阅http://www.pinvoke.net/default.aspx/kernel32/QueryPerformanceCounter.html。这就是Stopwatch
类所使用的。
有关详细信息,请参阅How to get timestamp of tick precision in .NET / C#?。
Stopwatch.GetTimestamp()
提供对此方法的访问:
public static long GetTimestamp() {
if(IsHighResolution) {
long timestamp = 0;
SafeNativeMethods.QueryPerformanceCounter(out timestamp);
return timestamp;
}
else {
return DateTime.UtcNow.Ticks;
}
}
https://stackoverflow.com/questions/4016483
复制相似问题