¿Cómo puedo construir exactamente una marca de tiempo del tiempo real con precisión de milisegundos?
Sospecho que te refieres a la precisión de milisegundos . DateTime
tiene mucha precisión, pero es bastante tosco en términos de precisión. En general, no puedes. Por lo general, el reloj del sistema (que es de donde DateTime.Now
obtiene sus datos) tiene una resolución de alrededor de 10-15 ms. Consulte la publicación del blog de Eric Lippert sobre precisión y exactitud para obtener más detalles.
Si necesita una sincronización más precisa que esta, es posible que desee considerar el uso de un cliente NTP.
Sin embargo, no está claro que realmente necesites una precisión de milisegundos aquí. Si no le importa el momento exacto , solo desea mostrar las muestras en el orden correcto, con una precisión "bastante buena", entonces el reloj del sistema debería estar bien. Le aconsejaría que use en DateTime.UtcNow
lugar de hacerlo DateTime.Now
, para evitar problemas de zona horaria alrededor de las transiciones de horario de verano, etc.
Si su pregunta es en realidad acerca de convertir un DateTime
a una cadena con precisión de milisegundos, sugiero usar:
string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff",
CultureInfo.InvariantCulture);
(Tenga en cuenta que, a diferencia de su muestra, esto es ordenable y es menos probable que cause confusión sobre si debe ser "mes / día / año" o "día / mes / año").