How do I get elapsed time in milliseconds in Ruby?

前端 未结 10 2179
走了就别回头了
走了就别回头了 2020-12-13 05:27

If I have a Time object got from :

Time.now

and later I instantiate another object with that same line, how can I see how many

10条回答
  •  盖世英雄少女心
    2020-12-13 05:59

    ezpz's answer is almost perfect, but I hope I can add a little more.

    Geo asked about time in milliseconds; this sounds like an integer quantity, and I wouldn't take the detour through floating-point land. Thus my approach would be:

    irb(main):038:0> t8 = Time.now
    => Sun Nov 01 15:18:04 +0100 2009
    irb(main):039:0> t9 = Time.now
    => Sun Nov 01 15:18:18 +0100 2009
    irb(main):040:0> dif = t9 - t8
    => 13.940166
    irb(main):041:0> (1000 * dif).to_i
    => 13940
    

    Multiplying by an integer 1000 preserves the fractional number perfectly and may be a little faster too.

    If you're dealing with dates and times, you may need to use the DateTime class. This works similarly but the conversion factor is 24 * 3600 * 1000 = 86400000 .

    I've found DateTime's strptime and strftime functions invaluable in parsing and formatting date/time strings (e.g. to/from logs). What comes in handy to know is:

    • The formatting characters for these functions (%H, %M, %S, ...) are almost the same as for the C functions found on any Unix/Linux system; and

    • There are a few more: In particular, %L does milliseconds!

提交回复
热议问题