Frage

Ich mache ein Programm, in dem ich brauche die Zeit in Millisekunden zu erhalten. Durch die Zeit, meine ich eine Zahl, die nie sich selbst gleich ist, und ist immer 1000 Nummern größer, als es vor einer Sekunde war. Ich habe versucht, DateTime.Now zu einem TimeSpan Umwandlung und die TotalMilliseconds aus, dass immer ... aber ich habe gehört, dass es nicht vollkommen korrekt ist.

Gibt es einen einfacheren Weg, dies zu tun?

War es hilfreich?

Lösung

Mit der Stopwatch Klasse.

  

Stellt eine Reihe von Methoden und   Eigenschaften, die Sie verwenden können   genau die abgelaufene Zeit messen.

Es gibt einige gute Infos hier an der Umsetzung:

Leistungstests: Precise Laufzeitmessungen mit System.Diagnostics.Stopwatch

Andere Tipps

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

Dies ist, wie eigentlich die verschiedenen Methoden Unix Konvertierung implementiert werden in der DateTimeOffset Klasse (.NET Framework 4.6+, .NET Standard-1.3 +):

long milliseconds = DateTimeOffset.Now.ToUnixTimeMilliseconds();

Die DateTime.Ticks Eigenschaft ruft die Anzahl der Ticks, die das Datum und die Zeit darstellen.

10.000 Ticks ist eine Millisekunde (10.000.000 Ticks pro Sekunde).

Sie können versuchen, die QueryPerformanceCounter native Methode. Siehe http://www.pinvoke.net/default.aspx/kernel32/QueryPerformanceCounter .html für weitere Informationen . Dies ist, was die Stopwatch-Klasse verwendet.

Siehe Wie Zeitstempel von tick Präzision erhalten in .NET / C #? für weitere Informationen.

Stopwatch.GetTimestamp() ermöglicht den Zugang zu dieser Methode:

public static long GetTimestamp() {
     if(IsHighResolution) {
         long timestamp = 0;
         SafeNativeMethods.QueryPerformanceCounter(out timestamp);
         return timestamp;
     }
     else {
         return DateTime.UtcNow.Ticks;
     }
 }

ich die folgende Klasse. Ich fand es im Internet einmal, postulierte das Beste sein 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); } }
}

Quelle unbekannt.

Ich habe DateTime.Now.TimeOfDay.TotalMilliseconds (für aktuellen Tag), hoffen, dass es Ihnen hilft als gut.

Mit System.DateTime.Now.ToUniversalTime(). Das bringt Ihre Lesung in einem bekannten Referenzbasis Millisekunden Format, das völlig Tag Änderung beseitigt, etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top