Issue #10544 has been updated by David MacMahon.


How about a more general `Time#to_i(scale=1)`?

Examples:

* Passing `1` for `scale` (or passing nothing) would return seconds.
* Passing `1000` for `scale` would return milliseconds.
* Passing `1/60r` for scale would return minutes.  


Masaki Matsushita wrote:
> 
> ~~~ruby
> milliseconds = (time.to_i * 1000) + (time.usec / 1000.0).round
> ~~~

IMHO, it is generally preferable to avoid time travel by truncating to the beginning of the "present" millisecond rather than possibly rounding to the beginning of the "future" millisecond.


----------------------------------------
Feature #10544: Time#to_i(:millisecond)
https://bugs.ruby-lang.org/issues/10544#change-50110

* Author: Masaki Matsushita
* Status: Open
* Priority: Normal
* Assignee: 
* Category: core
* Target version: next minor
----------------------------------------
Currently, we have to take an indirect way to get unix_time in milliseconds.

~~~ruby
time = Time.now
milliseconds = (time.to_i * 1000) + (time.usec / 1000.0).round
~~~

I think it would be convenient if `Time#to_i` accepts unit parameter like following.

~~~ruby
time = Time.now
milliseconds = time.to_i(:millisecond)
~~~

---Files--------------------------------
patch.diff (2.71 KB)


-- 
https://bugs.ruby-lang.org/