Estoy haciendo un programa en el que necesito obtener el tiempo en milisegundos. Por tiempo, me refiero a un número que nunca es igual a sí mismo, y siempre es 1000 números más grande que hace un segundo. He intentado convertir DateTime.Now
a ay TimeSpan
obtener TotalMilliseconds
eso ... pero he oído que no es perfectamente exacto.
¿Hay una manera más fácil de hacer esto?
c#
datetime
milliseconds
time-precision
Entidad
fuente
fuente
Respuestas:
Usa la
Stopwatch
clase.Hay buena información sobre cómo implementarlo aquí:
Pruebas de rendimiento: mediciones precisas del tiempo de ejecución con System.Diagnostics.Stopwatch
fuente
Así es como se implementan los diversos métodos de conversión de Unix en la
DateTimeOffset
clase (.NET Framework 4.6+, .NET Standard 1.3+):fuente
DateTime.Now
no se "actualiza" muy a menudo), por supuesto, usedecimal milliseconds = DateTime.Now.Ticks / (decimal)TimeSpan.TicksPerMillisecond;
en su lugar.long
tipo de datos frente a milisegundos. El usoint
ciertamente se desbordará.La
DateTime.Ticks
propiedad obtiene el número de ticks que representan la fecha y la hora.10,000 ticks es un milisegundo (10,000,000 ticks por segundo).
fuente
A single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond.
Yo uso la siguiente clase. Lo encontré en Internet una vez, postulado para ser el mejor AHORA () .
Fuente desconocida
fuente
Puedes probar el
QueryPerformanceCounter
método nativo. Consulte http://www.pinvoke.net/default.aspx/kernel32/QueryPerformanceCounter.html para obtener más información. Esto es lo queStopwatch
usa la clase.Consulte ¿Cómo obtener la marca de tiempo de precisión de marca en .NET / C #? para más información.
Stopwatch.GetTimestamp()
da acceso a este método:fuente
Stopwatch.GetTimestamp()
realmente proporciona acceso a ese método.Utilicé DateTime.Now.TimeOfDay.TotalMilliseconds (para el día actual), espero que también te ayude.
fuente
Uso
System.DateTime.Now.ToUniversalTime()
. Eso coloca su lectura en un formato de milisegundos basado en referencias conocido que elimina totalmente el cambio de día, etc.fuente