如何将时间戳字符串“2014-07-20T05:11:49.988Z”转换为 R 中的 POSIXt?

How to convert time stamp string "2014-07-20T05:11:49.988Z" into POSIXt in R?

如何将时间戳字符串“2014-07-20T05:11:49.988Z”转换为R中的POSIXt?

我想知道秒为什么用3个分位数来表示?在时间戳末尾附加 'Z' 是什么意思? 谁能知道这个字符串如何在 R

中转换成时间

"Z" 是 shorthand for UTC。您可以使用

在 base R 中解析它
x <- as.POSIXct("2014-07-20T05:11:49.998Z", 
    format="%Y-%m-%dT%H:%M:%OSZ", tz="GMT")

请注意,您通常使用 POSIXct 或 POSIXlt 而不是直接使用 POSIXt(两者都以 POSIXt 作为基础 class)

lubridate 包有非常健壮的解析器,我倾向于在基础 R

中手动指定 format
library(lubridate)
#> 
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#> 
#>     date

(t <- ymd_hms("2014-07-20T05:11:49.998Z"))
#> [1] "2014-07-20 05:11:49 UTC"

reprex package (v0.2.1)

于 2019-03-11 创建

确保未打印的毫秒数也不会丢失:

second(t)
#> [1] 49.998