如何从R午夜开始经过毫秒?

时间:2014-05-22 10:03:34

标签: r

在strptime和as.POSIXct的帮助下,POSIXlt和POSIXct类似乎只记录整秒。

(我需要毫秒来将它们作为种子传递给共享对象中的随机数生成器。)

2 个答案:

答案 0 :(得分:4)

您可以通过更改选项将打印时间设置为亚秒级精度:

options("digits.secs"=6)

最多6位数 - 请参阅options

然后,您可以使用以下方法将系统时间提高到毫秒级精度:

as.POSIXlt(Sys.time())

那将打印时间。要获得自午夜之后的毫秒数,您只需使用:

mySeed = as.POSIXlt(Sys.time())
mySeed = 1000*(mySeed$hour*3600 + mySeed$min*60 + mySeed$sec)

答案 1 :(得分:1)

?Sys.time说:

  

在几乎所有系统上,它可能具有亚秒级精度   微秒或更好。在Windows上,它以时钟周期递增   (通常为1/60秒)报告精确到毫秒级。

所以你可以这样做:

> foo <- Sys.time()
> foo
[1] "2014-05-22 12:40:55 CEST"
> hours <- as.POSIXlt(foo)$hour
> minutes <- as.POSIXlt(foo)$min
> seconds <- as.POSIXlt(foo)$sec
> hours*60*60*1000+minutes*60*1000+seconds*1000
[1] 45655771

根据帮助页面,您的结果将取决于您的系统。

如果你想打印毫秒,你可以这样做:

> options(digits.secs=3)
> foo
[1] "2014-05-22 12:40:55.771 CEST"