Получить текущее время в миллисекундах

Я пытаюсь выполнить вызов 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