Jika saya punya Time
benda didapat dari:
Time.now
dan kemudian saya membuat instance objek lain dengan baris yang sama, bagaimana saya bisa melihat berapa milidetik yang telah berlalu? Objek kedua dapat dibuat pada menit yang sama, selama beberapa menit atau bahkan jam berikutnya.
finish.to_f - start.to_f
?finish - start
menghasilkan floating point;.to_f
akan menjadi mubazir.(t2 - t1).in_milliseconds
Anda dapat menambahkan sedikit gula sintaks ke solusi di atas dengan yang berikut:
sumber
Saya pikir jawabannya salah dipilih, metode itu memberikan detik, bukan milidetik.
Di sini saya kira nilai mengambang adalah milidetik
sumber
Time.now
memperlakukan waktu sebagai nilai titik mengambang dengan detik sebelum titik desimal dan hingga nanodetik setelah titik desimal (meskipun nsec mungkin tidak sepenuhnya akurat). Jadi, mengalikan nilai itu dengan1000.0
menghasilkan milidetik.Untuk mendapatkan waktu dalam milidetik, lebih baik ditambahkan
.round(3)
, sehingga akan lebih akurat dalam beberapa kasus:sumber
Jawaban ezpz hampir sempurna, tapi saya harap saya bisa menambahkan lebih banyak.
Geo bertanya tentang waktu dalam milidetik; ini terdengar seperti kuantitas integer, dan saya tidak akan mengambil jalan memutar melalui tanah floating-point. Jadi pendekatan saya adalah:
Mengalikan dengan bilangan bulat 1000 mempertahankan bilangan pecahan dengan sempurna dan mungkin sedikit lebih cepat juga.
Jika Anda berurusan dengan tanggal dan waktu, Anda mungkin perlu menggunakan kelas DateTime . Ini berfungsi serupa tetapi faktor konversinya adalah 24 * 3600 * 1000 = 86400000 .
Saya telah menemukan bahwa fungsi strptime dan strftime DateTime sangat berharga dalam parsing dan format string tanggal / waktu (misalnya ke / dari log). Apa yang berguna untuk diketahui adalah:
Karakter pemformatan untuk fungsi ini (% H,% M,% S, ...) hampir sama dengan fungsi C yang ditemukan pada sistem Unix / Linux manapun; dan
Ada beberapa lagi: Secara khusus, % L melakukan milidetik!
sumber
unknown
:)Contoh penggunaan:
sumber
Time.now.to_f dapat membantu Anda tetapi mengembalikan detik.
Secara umum, saat bekerja dengan tolok ukur I:
Ini proses yang sangat sederhana, jadi saya tidak yakin Anda benar-benar menanyakan ini ...
sumber
%L
memberikan milidetik dalam rubyatau
akan memberi Anda stempel waktu saat ini dalam milidetik.
sumber
Jawabannya seperti ini:
Namun,
Time.now
pendekatan tersebut berisiko menjadi tidak akurat. Saya menemukan posting ini oleh Luca Guidi:https://blog.dnsimple.com/2018/03/elapsed-time-with-ruby-the-right-way/
Jadi, sebaiknya gunakan
Process.clock_gettime
saja. Sesuatu seperti:Contoh:
sumber
Cobalah mengurangi waktu pertama. Sekarang dari yang kedua. Seperti:
Ini memberi Anda angka floating-point dari detik antara dua waktu (dan dengan itu, milidetik).
sumber