所以我希望将一些ISO 8601时间转换为R中的UTC格式。例如:
library("lubridate")
x <- "2010-04-14-01-00-00-UTC"
datetime <- lubridate::ymd_hms(x)
datetime
[1] "2010-04-14 01:00:00 UTC"
strftime(datetime, "%Y-%m-%dT%H:%M:%SZ")
[1] "2010-04-14T02:00:00Z"
然而,在ISO 8601中,“Z”表示UTC时间,因此我预期“2010-04-14T01:00:00Z”,但是在日期时间上添加了一个小时。为什么?我想念一些东西吗?
R在两者之间转换的正确方法是什么?并向后转换?
答案 0 :(得分:0)
来自文档:
strftime(x, format = "", tz = "", usetz = FALSE, ...)
[...]
tz
一个字符串,指定用于的时区 转换。特定于系统(参见as.POSIXlt),但&#34;&#34;是目前的 时区和&#34; GMT&#34;是UTC。最常处理无效值 作为UTC,在某些带有警告的平台上。
因此,您需要指定正确的时区:
strftime(datetime, "%Y-%m-%dT%H:%M:%SZ", tz = "UTC")
#[1] "2010-04-14T01:00:00Z"
否则需要系统区域设置的时区:
strftime(datetime, "%Y-%m-%dT%H:%M:%S", usetz = TRUE)
#[1] "2010-04-14T03:00:00 CEST"