我有一些数字表示自纪元以来的毫秒数,00:00:00协调世界时(UTC),1970年1月1日,星期四
1365368400000,
1365973200000,
1366578000000
Run Code Online (Sandbox Code Playgroud)
我正在将它们转换为日期格式:
as.Date(as.POSIXct(my_dates/1000, origin="1970-01-01", tz="GMT"))
Run Code Online (Sandbox Code Playgroud)
回答:
[1] "2013-04-07" "2013-04-14" "2013-04-21"
Run Code Online (Sandbox Code Playgroud)
如何将这些字符串转换回自纪元以来的毫秒数?
这是你的javascript日期
x <- c(1365368400000, 1365973200000, 1366578000000)
Run Code Online (Sandbox Code Playgroud)
您可以通过除以一天中的毫秒数来更轻松地将它们转换为R日期.
y <- as.Date(x / 86400000, origin = "1970-01-01")
Run Code Online (Sandbox Code Playgroud)
要转换回来,只需转换为数字并乘以此数字即可.
z <- as.numeric(y) * 86400000
Run Code Online (Sandbox Code Playgroud)
最后,检查答案是否是您的开始.
stopifnot(identical(x, z))
Run Code Online (Sandbox Code Playgroud)
根据评论,您有时可能会得到数字舍入错误,导致x
并且z
不相同.对于像这样的数字比较,使用:
library(testthat)
expect_equal(x, z)
Run Code Online (Sandbox Code Playgroud)