【问题标题】:Get current time in milliseconds以毫秒为单位获取当前时间
【发布时间】:2019-07-23 21:32:20
【问题描述】:

我正在尝试执行需要以毫秒为单位的时间的 API 调用。我是 R 的新手,并且在谷歌上搜索了几个小时以实现类似于 Java 中的目标:

System.currentTimeMillis();

我只看到类似的东西

Sys.Date()Sys.time

返回格式化的日期而不是毫秒的时间。

我希望有人能给我一个可以解决我问题的oneliner。

【问题讨论】:

  • 更新我检查了 Java 函数,我猜你的平均时间确实是 in 毫秒。
  • 您的意思是 时间(以毫秒为单位)还是 a 时间(以毫秒为单位)?

标签: r


【解决方案1】:

Sys.time 不返回“格式化时间”。它返回一个POSIXct 分类对象,它是自 Unix 纪元以来的秒数。当然,当您打印该对象时,它会返回一个格式化的时间。但是,打印的方式并不是它的本来面目。

若要获取当前时间(以毫秒为单位),只需将Sys.time 的输出转换为数字,然后乘以1000。

R> print(as.numeric(Sys.time())*1000, digits=15)
[1] 1476538955719.77

根据您要进行的 API 调用,您可能需要删除小数毫秒。

【讨论】:

  • 对于懒人(去除小数毫秒):current_timestamp = round(as.numeric(Sys.time())*1000)
【解决方案2】:

无需设置全局变量digits.secs。 详情请见strptime

# Print milliseconds of current time
# See ?strptime for details, specifically
# the formatting option %OSn, where 0 <= n <= 6 
as.numeric(format(Sys.time(), "%OS3")) * 1000

【讨论】:

  • 只是当前时间戳的毫秒部分。不确定这是否是预期的。您可能想要添加时间戳的其余部分。
  • 据我了解,OP 希望以毫秒为单位表示当前系统时间的秒数。
  • 也许 OP 可以澄清一下。将时间戳的其余部分转换为毫秒是微不足道的。如果这是所需的输出,我将附加我的答案。
【解决方案3】:

获取当前纪元时间(以秒为单位):

as.numeric(Sys.time())

如果你想得到时间差(例如计算持续时间),只需直接减去Sys.time(),你就会得到格式很好的字符串:

currentTs <- Sys.time()
# about five seconds later
elapsed <- Sys.time() - currentTs
print(elapsed)    # Time difference of 4.926194 secs

【讨论】:

    猜你喜欢
    • 2011-10-25
    • 2017-02-20
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2011-08-25
    • 1970-01-01
    相关资源
    最近更新 更多