Mit strftime
können Sie die Anzahl der Sekunden ermitteln und Millisekunden (oder bei Bedarf kleinere Einheiten) anhängen:
2.2.2 :001 > t = Time.new
=> 2015-06-02 12:16:56 -0700
2.2.2 :002 > t.strftime('%s%3N')
=> "1433272616888"
Beachten Sie jedoch, dass dies nicht rund ist, sondern abgeschnitten wird, wie Sie sehen können to_f
oder wenn Sie auf Mikrosekunden gehen:
2.2.2 :003 > t.to_f
=> 1433272616.888615
2.2.2 :004 > t.usec
=> 888615
und die to_f
/ to_i
Lösung hat das gleiche Problem:
2.2.2 :009 > (t.to_f * 1000).to_i
=> 1433272616888
Wenn Sie also wirklich um Millisekunden Genauigkeit sorgen, eine bessere Wette sein kann to_f
mit round
:
2.2.2 :010 > (t.to_f * 1000).round
=> 1433272616889
Wie in den Dokumenten erwähnt , ist "IEEE 754 double nicht genau genug, um die Anzahl der Nanosekunden seit der Epoche darzustellen". Wenn Sie sich also wirklich wirklich darum kümmern, sollten Sie to_r
statt to_f
-
2.2.2 :011 > (t.to_r * 1000).round
=> 1433272616889
- obwohl es Ihnen wahrscheinlich gut geht, wenn Sie nur auf Millisekunden runden.