Bagaimana saya bisa membuat cap waktu yang sebenarnya dengan ketepatan milidetik?
Saya butuh sesuatu seperti 16.4.2013 9: 48: 00: 123. Apakah ini mungkin? Saya memiliki aplikasi, di mana saya sampel nilai 10 kali per detik, dan saya perlu menunjukkannya dalam grafik.
c#
datetime
precision
milliseconds
LuckyHK
sumber
sumber
hh
selama berjam-jam (waktu standar). Dalam hal cap waktu (dan dalam banyak kasus lainnya) ini mungkin harus dipasangkan dengantt
(am / pm) atau diganti denganHH
(waktu militer).Jawaban:
Saya menduga maksud Anda akurasi milidetik .
DateTime
memiliki banyak presisi, tetapi cukup kasar dalam hal akurasi. Secara umum, Anda tidak bisa. Biasanya jam sistem (yang merupakan tempat pengambilanDateTime.Now
datanya) memiliki resolusi sekitar 10-15 ms. Lihat posting blog Eric Lippert tentang presisi dan akurasi untuk detail lebih lanjut.Jika Anda membutuhkan pengaturan waktu yang lebih akurat dari ini, Anda mungkin ingin melihat ke dalam menggunakan klien NTP.
Namun, tidak jelas bahwa Anda benar-benar membutuhkan akurasi milidetik di sini. Jika Anda tidak peduli dengan waktu yang tepat - Anda hanya ingin menunjukkan sampel dalam urutan yang benar, dengan akurasi "cukup bagus", maka jam sistem harus baik-baik saja. Saya menyarankan Anda untuk menggunakan
DateTime.UtcNow
daripadaDateTime.Now
untuk menghindari masalah zona waktu di sekitar transisi musim panas, dll.Jika pertanyaan Anda sebenarnya hanya sekitar mengkonversi
DateTime
ke string dengan presisi milidetik, saya sarankan menggunakan:(Perhatikan bahwa tidak seperti sampel Anda, ini mudah disortir dan cenderung menyebabkan kebingungan apakah itu dimaksudkan sebagai "bulan / hari / tahun" atau "hari / bulan / tahun".)
sumber
DateTime.UtcNow
berulang kali, apakah hanya akan bertambah satu kali per detik? Anda belum menunjukkannya.)Ini seharusnya bekerja:
Jika Anda tidak membutuhkannya untuk ditampilkan dan hanya perlu mengetahui perbedaan waktu, jangan mengubahnya menjadi String. Biarkan saja sebagai,
DateTime.Now();
Dan gunakan
TimeSpan
untuk mengetahui perbedaan antara interval waktu:Contoh
sumber
Saya sedang mencari solusi yang sama, berdasarkan apa yang disarankan di utas ini, saya menggunakan yang berikut
DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff")
, dan itu bekerja seperti pesona. Catatan: itu.fff
adalah angka presisi yang ingin Anda tangkap.sumber
HH
(waktu militer) atau tambahkantt
(PM atau AM). Seperti ditunjukkan dalam contoh ini: repl.it/KGr3/1Gunakan Struktur DateTime dengan milidetik dan format seperti ini:
sumber
Jawaban Pyromancer tampaknya cukup baik bagi saya, tetapi mungkin Anda ingin:
Tetapi jika Anda membandingkan tanggal, TimeSpan adalah cara untuk pergi.
sumber
TotalMilliseconds
. Milidetik memegang penghitung milidetik saat ini, yang tidak pernah lebih besar dari 1000, sedangkan TotalMillisecond memegang total milidetik yang berlalu sejak zaman.Jika Anda masih menginginkan kencan alih-alih string seperti jawaban lainnya, cukup tambahkan metode ekstensi ini.
sumber
Sejauh yang saya mengerti pertanyaannya, Anda bisa mencari:
Ini akan memotong kutu yang lebih kecil dari 1 milidetik.
sumber
Masalahnya dengan
DateTime.UtcNow
danDateTime.Now
apakah itu, tergantung pada komputer dan sistem operasi, itu mungkin hanya akurat antara 10 dan 15 milidetik. Namun, pada komputer windows seseorang dapat menggunakan dengan menggunakan fungsi tingkat rendah GetSystemTimePreciseAsFileTime untuk mendapatkan akurasi mikrodetik, lihat fungsi diGetTimeStamp()
bawah ini.sumber
coba gunakan datetime.now.ticks. ini memberikan presisi nanosecond. mengambil delta dua kutu (stoptick - starttick) / 10.000 adalah milidetik dari interval yang ditentukan.
https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks?view=netframework-4.7.2
sumber
Jika Anda ingin mikrodetik, ubah saja
10000
ke10
, dan jika Anda ingin mikro ke-10, hapus/ 10000
.sumber
DateTime.Now.ToString ("ddMMyyyyhhmmssffff")
sumber