在strptime和as.POSIXct的帮助下,POSIXlt和POSIXct类似乎只记录整秒。
(我需要毫秒来将它们作为种子传递给共享对象中的随机数生成器。)
答案 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"