Gerçek zamanlı zaman damgasını milisaniye hassasiyetle tam olarak nasıl oluşturabilirim?
Milisaniye doğruluk demek istediğinizden şüpheleniyorum . DateTime
çok hassastır, ancak doğruluk açısından oldukça kabadır. Genel olarak konuşamazsınız. Genellikle sistem saatinin ( DateTime.Now
verilerini aldığı yer) yaklaşık 10-15 ms'lik bir çözünürlüğe sahiptir. Daha fazla ayrıntı için hassasiyet ve doğruluk hakkında Eric Lippert'in blog gönderisine bakın.
Bundan daha doğru bir zamanlamaya ihtiyacınız varsa, bir NTP istemcisi kullanmaya bakmak isteyebilirsiniz.
Bununla birlikte, burada gerçekten milisaniye hassasiyete ihtiyacınız olduğu açık değildir. Kesin zamanlamayı umursamıyorsanız - sadece örnekleri "oldukça iyi" doğrulukta doğru sırada göstermek istiyorsanız, sistem saati iyi olmalıdır. Kullandığım öneriyorum DateTime.UtcNow
ziyade DateTime.Now
yaz saati geçişleri vb etrafında saat dilimi sorunları önlemek için, gerçi
Sorunuz aslındaDateTime
bir milisaniye hassasiyetle bir dizeye dönüştürmek etrafında ise , ben kullanmanızı öneririz:
string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff",
CultureInfo.InvariantCulture);
(Örneğinizin aksine, bunun sıralanabilir olduğunu ve "ay / gün / yıl" veya "gün / ay / yıl" olması gerektiği konusunda karışıklığa neden olma olasılığının düşük olduğunu unutmayın.)