Получить текущее время в миллисекундах
Я пытаюсь выполнить вызов API, для которого требуется время в миллисекундах. Я новичок в R и долгое время работал в Googling, чтобы добиться чего-то вроде того, что было на Java:
System.currentTimeMillis();
Единственное, что я вижу, это вещи вроде
Sys.Date()
и Sys.time
который возвращает отформатированную дату вместо времени в миллисекундах.
Я надеюсь, что кто-то может дать мне oneliner, который решает мою проблему.
Ответы
Ответ 1
Sys.time
не возвращает "отформатированное время". Он возвращает класс POSIXct
, который представляет собой число секунд с момента Unix. Конечно, когда вы печатаете этот объект, он возвращает отформатированное время. Но что-то печатает не то, что есть.
Чтобы получить текущее время в миллисекундах, вам просто нужно преобразовать вывод Sys.time
в числовой и умножить на 1000.
R> print(as.numeric(Sys.time())*1000, digits=15)
[1] 1476538955719.77
В зависимости от вызова API, который вы хотите создать, вам может потребоваться удалить дробные миллисекунды.
Ответ 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
Ответ 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