【问题标题】:Get current system time in milliseconds以毫秒为单位获取当前系统时间
【发布时间】:2016-09-06 08:35:13
【问题描述】:

在 Ruby 中,以 毫秒 为单位获取自 epoch(1970) 以来的当前系统时间的正确方法是什么?

我试过 Time.now.to_i ,似乎不是我想要的结果。我需要结果显示毫秒和long 类型,而不是floatdouble

【问题讨论】:

    标签: ruby


    【解决方案1】:

    您可以组合to_iusec。前者返回自 Epoch 以来的秒数,后者返回微秒数:

    require 'time'
    t = Time.at(1473152006, 2000)
    
    t.to_i * 1000 + t.usec / 1000
    #=> 1473152006002
    

    这相当于:

    t.strftime('%s%L')
    #=> "1473152006002"
    

    在上述某些情况下,to_f 会引入轻微的浮点错误:

    t.to_f * 1000
    #=> 1473152006001.9998
    (t.to_f * 1000).to_i
    #=> 1473152006001
    

    【讨论】:

    • 您可以通过四舍五入来修复浮点数。这也将浮点值转换为 int。 (Time.now.to_f * 1000).round
    • @kallax 对于Time.at(1473152006, 999) 会失败
    【解决方案2】:
    (Time.now.to_f * 1000).to_i
    

    Time.now.to_f 显示时间,包括十进制数字。要获得毫秒数,只需将时间乘以 1000。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 2017-02-20
      • 2017-04-25
      • 1970-01-01
      • 2013-09-21
      • 2019-12-26
      相关资源
      最近更新 更多