Ich mache ein Programm, in dem ich die Zeit in Millisekunden bekommen muss. Mit Zeit meine ich eine Zahl, die niemals gleich ist und immer 1000 Zahlen größer ist als vor einer Sekunde. Ich habe versucht, DateTime.Now
zu einem zu konvertieren TimeSpan
und das TotalMilliseconds
daraus zu machen ... aber ich habe gehört, dass es nicht ganz genau ist.
Gibt es einen einfacheren Weg, dies zu tun?
c#
datetime
milliseconds
time-precision
Entität
quelle
quelle
Antworten:
Verwenden Sie die
Stopwatch
Klasse.Hier finden Sie einige gute Informationen zur Implementierung:
Leistungstests: Präzise Laufzeitmessungen mit System.Diagnostics.Stopwatch
quelle
So werden die verschiedenen Unix-Konvertierungsmethoden in der
DateTimeOffset
Klasse implementiert (.NET Framework 4.6+, .NET Standard 1.3+):quelle
DateTime.Now
nicht sehr oft "aktualisiert" werden), verwenden Siedecimal milliseconds = DateTime.Now.Ticks / (decimal)TimeSpan.TicksPerMillisecond;
stattdessen stattdessen.long
Datentyp vor Millisekunden. Mitint
sicherlich wird überlaufen.Das
DateTime.Ticks
Eigenschaft erhält die Anzahl der Ticks, die Datum und Uhrzeit darstellen.10.000 Ticks sind eine Millisekunde (10.000.000 Ticks pro Sekunde).
quelle
A single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond.
Ich benutze die folgende Klasse. Ich habe es einmal im Internet gefunden und postuliert, es sei das beste JETZT () .
Quelle unbekannt.
quelle
Sie können die
QueryPerformanceCounter
native Methode ausprobieren . Weitere Informationen finden Sie unter http://www.pinvoke.net/default.aspx/kernel32/QueryPerformanceCounter.html . Dies ist, was dieStopwatch
Klasse verwendet.Siehe So erhalten Sie einen Zeitstempel für die Tick-Genauigkeit in .NET / C # für mehr Informationen.
Stopwatch.GetTimestamp()
gibt Zugriff auf diese Methode:quelle
Stopwatch.GetTimestamp()
bietet tatsächlich Zugriff auf diese Methode.Ich habe DateTime.Now.TimeOfDay.TotalMilliseconds (für den aktuellen Tag) verwendet, hoffe, es hilft Ihnen auch.
quelle
Verwenden Sie
System.DateTime.Now.ToUniversalTime()
. Dadurch wird Ihr Messwert in ein bekanntes referenzbasiertes Millisekundenformat gebracht, das Tagesänderungen usw. vollständig eliminiert.quelle