我正在尝试进行API调用,这需要一个毫秒的时间。我是R的新手,并且谷歌搜索了几个小时来实现类似于Java的东西:
System.currentTimeMillis();
我看到的只有像
这样的东西 Sys.Date()
和Sys.time
以毫秒为单位返回格式化日期而不是时间。
我希望有人可以给我一个解决我问题的oneliner。
答案 0 :(得分:23)
Sys.time
不会返回“格式化时间”。它返回一个POSIXct
类对象,这是自Unix纪元以来的秒数。当然,当您打印该对象时,它会返回格式化的时间。但是打印的东西不是它的样子。
要以毫秒为单位获取当前时间,您只需将Sys.time
的输出转换为数字,然后乘以1000即可。
R> print(as.numeric(Sys.time())*1000, digits=15)
[1] 1476538955719.77
根据您要进行的API调用,您可能需要删除小数毫秒。
答案 1 :(得分:5)
无需设置全局变量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
答案 2 :(得分:0)
要获取当前纪元时间(以秒为单位):
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