在 R 中创建日期,以 Unix 时间戳格式增加 10ms 的时间间隔

Create in R date, time intervals increasing by 10ms in Unix timestamp format

我正在尝试将此 vector(v) 转换为 Unix 时间戳。年月日时分秒不重要,但需要介绍

v = c("10ms", "20ms", "30ms", ..., "800ms")

A) 我想从以下开始:

x <- c("2000-01-01 0:00:00.000", "2000-01-01 0:00:00.010", "2000-01-01 0:00:00.020")
y <- as.POSIXct(x, format = "%Y-%m-%d %H:%M:%OS", origin = "1970-01-01", tz = "America/Chicago")
y = format(y, "%Y-%m-%d %H:%M:%OS4")

B) 并将其转换为 Unix 时间戳:

z = as.numeric(as.POSIXct(y,format = "%Y-%m-%d %H:%M:%OS4", origin = "1970-01-01", tz = "America/Chicago"))

这会产生:NA NA NA

z = as.numeric(as.POSIXct(y,format = "%Y-%m-%d %H:%M:%OS", origin = "1970-01-01", tz = "America/Chicago"))

这产生:946706400 946706400 946706400

如有任何帮助,我们将不胜感激。

修复起来非常简单。在您的示例中,z 实际上 确实 包含小数部分,但它不会打印到控制台,因为数字太大了。如果你把它转换成一个字符,你应该得到你想要的结果:

as.character(round(z, 3))
#> [1] "946706400"    "946706400.01" "946706400.02"

或根据您选择的格式:

y <- as.POSIXct("2000-01-01") + lubridate::milliseconds(1:10)
format(round(as.numeric(y), 3), digits = 13)
#>  [1] "946684800.001" "946684800.002" "946684800.003" "946684800.004" "946684800.005"
#>  [6] "946684800.006" "946684800.007" "946684800.008" "946684800.009" "946684800.010"