Get current time in milliseconds

Sys.time does not return a "formatted time". It returns a POSIXct classed object, which is the number of seconds since the Unix epoch. Of course, when you print that object, it returns a formatted time. But how something prints is not what it is.

To get the current time in milliseconds, you just need to convert the output of Sys.time to numeric, and multiply by 1000.

R> print(as.numeric(Sys.time())*1000, digits=15)
[1] 1476538955719.77

Depending on the API call you want to make, you might need to remove the fractional milliseconds.


No need for setting the global variable digits.secs. See strptime for details.

# 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

To get current epoch time (in second):

as.numeric(Sys.time())

If you want to get the time difference (for computing duration for example), just subtract Sys.time() directly and you will get nicely formatted string:

currentTs <- Sys.time()
# about five seconds later
elapsed <- Sys.time() - currentTs
print(elapsed)    # Time difference of 4.926194 secs

Tags:

R