Dengan menggunakan strftime, Anda bisa mendapatkan jumlah detik dan menambahkan milidetik pecahan (atau unit yang lebih kecil, jika perlu):
2.2.2 :001 > t = Time.new
=> 2015-06-02 12:16:56 -0700
2.2.2 :002 > t.strftime('%s%3N')
=> "1433272616888"
Perhatikan bahwa ini tidak bulat, ini terpotong, seperti yang Anda lihat dengan to_fatau jika Anda keluar ke mikrodetik:
2.2.2 :003 > t.to_f
=> 1433272616.888615
2.2.2 :004 > t.usec
=> 888615
dan to_f/ to_isolusi memiliki masalah yang sama:
2.2.2 :009 > (t.to_f * 1000).to_i
=> 1433272616888
jadi jika Anda benar-benar peduli dengan akurasi milidetik, taruhan yang lebih baik mungkin to_fdengan round:
2.2.2 :010 > (t.to_f * 1000).round
=> 1433272616889
Yang mengatakan, seperti yang dicatat dalam dokumen , "IEEE 754 double tidak cukup akurat untuk mewakili jumlah nanodetik sejak Epoch", jadi jika Anda benar- benar peduli, pertimbangkan to_rdaripada to_f-
2.2.2 :011 > (t.to_r * 1000).round
=> 1433272616889
- meskipun jika Anda hanya membulatkan ke milidetik Anda mungkin baik-baik saja.