Como posso exatamente construir um carimbo de data / hora com precisão de milissegundos?
Eu suspeito que você quer dizer precisão de milissegundos . DateTime
tem muita precisão, mas é bastante grosseiro em termos de precisão. De um modo geral, você não pode. Normalmente, o relógio do sistema (que é o local de onde DateTime.Now
os dados são obtidos) tem uma resolução de cerca de 10 a 15 ms. Consulte a publicação no blog de Eric Lippert sobre precisão e exatidão para obter mais detalhes.
Se você precisar de um tempo mais preciso do que isso, convém usar um cliente NTP.
No entanto, não está claro que você realmente precise de uma precisão de milissegundos aqui. Se você não se importa com o tempo exato - você só quer mostrar as amostras na ordem certa, com uma precisão "muito boa", o relógio do sistema deve estar bem. Aconselho você a usar, em DateTime.UtcNow
vez de DateTime.Now
evitar, problemas de fuso horário em torno das transições de horário de verão, etc.
Se a sua pergunta é , na verdade, apenas em torno converter uma DateTime
a uma corda com uma precisão de milissegundos, eu sugiro usar:
string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff",
CultureInfo.InvariantCulture);
(Observe que, diferentemente de sua amostra, é possível classificá-lo e é menos provável que cause confusão quanto ao fato de ser "mês / dia / ano" ou "dia / mês / ano".)