使用C#获取时间(以毫秒为单位)

时间:2010-10-25 16:03:45

标签: c# datetime milliseconds time-precision

我正在制作一个程序,我需要在几毫秒内获得时间。到时候,我的意思是一个永远不会与自己相等的数字,并且总是比一秒钟前更大的1000个数字。我已尝试将DateTime.Now转换为TimeSpan并从中获取TotalMilliseconds ...但我听说它不完全准确。

有更简单的方法吗?

9 个答案:

答案 0 :(得分:268)

long milliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

这实际上是如何在DateTimeOffset类(.NET Framework 4.6 +,.NET Standard 1.3 +)中实现各种Unix转换方法:

long milliseconds = DateTimeOffset.Now.ToUnixTimeMilliseconds();

答案 1 :(得分:74)

使用Stopwatch类。

  

提供一组方法和   您可以使用的属性   准确地测量经过的时间。

这里有一些很好的信息来实现它:

Performance Tests: Precise Run Time Measurements with System.Diagnostics.Stopwatch

答案 2 :(得分:13)

DateTime.Ticks属性获取表示日期和时间的刻度数。

10,000蜱是一毫秒(每秒10,000,000蜱)。

答案 3 :(得分:8)

您可以尝试使用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;
     }
 }

答案 4 :(得分:7)

我使用以下课程。我在互联网上找到了一次,假设是最好的 NOW()

/// <summary>Class to get current timestamp with enough precision</summary>
static class CurrentMillis
{
    private static readonly DateTime Jan1St1970 = new DateTime (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    /// <summary>Get extra long current timestamp</summary>
    public static long Millis { get { return (long)((DateTime.UtcNow - Jan1St1970).TotalMilliseconds); } }
}

来源不明。

答案 5 :(得分:5)

我使用DateTime.Now.TimeOfDay.TotalMilliseconds(当天),希望它也可以帮助你。

答案 6 :(得分:1)

使用System.DateTime.Now.ToUniversalTime()。这使得您的读数采用已知的基于参考的毫秒格式,完全消除了日期变化等。

答案 7 :(得分:1)

使用秒表类,我们可以从System.Diagnostics中实现它。

Stopwatch stopwatch  = new Stopwatch();
stopwatch.Start();
stopwatch.Stop();
Debug.WriteLine(stopwatch.ElapsedMilliseconds);

答案 8 :(得分:0)

System.DateTimeOffset.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt") 以“04/01/2021 04:32:14.788 PM”的格式获取毫秒

https://docs.microsoft.com/en-us/dotnet/standard/base-types/how-to-display-milliseconds-in-date-and-time-values