From: sawadatsuyoshi@... Date: 2019-05-27T10:10:26+00:00 Subject: [ruby-core:92859] [Ruby trunk Feature#15879] Proposal: Time#to_i accepts :unit keyword Issue #15879 has been updated by sawa (Tsuyoshi Sawada). By analogy from `Time#round`, which takes as an argument an integer representing the precision in decimal places, and from `String#to_i`, which takes an integer, I think that passing an integer representing the number of decimal places would fit better. Something like this: ```ruby { event_id: id, name: name, tracked_at: tracked_at.to_i(3), tracked_at_micro: tracked_at.to_i(6) } ``` Default would be `0`. ---------------------------------------- Feature #15879: Proposal: Time#to_i accepts :unit keyword https://bugs.ruby-lang.org/issues/15879#change-78240 * Author: joker1007 (Tomohiro Hashidate) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- I often need Unix time as microseconds or nanoseconds to serialize for other language environments. For example, Java uses milliseconds(nanoseconds) basically. In such a situation, current Ruby code is like below. ``` ruby { event_id: id, name: name, tracked_at: (tracked_at.to_f * 1000).round, tracked_at_micro: (tracked_at * 1000000 + tracked_at.usec) } ``` But this example is noisy. And it is easy to make a mistake. I want to write like below. ```ruby { event_id: id, name: name, tracked_at: tracked_at.to_i(unit: :milli), tracked_at_micro: tracked_at.to_i(unit: :micro) } # or { event_id: id, name: name, tracked_at: tracked_at.as_msec, tracked_at_micro: tracked_at.as_usec } ``` -- https://bugs.ruby-lang.org/ Unsubscribe: