我有一个时间向量,每个时间都位于不同的时区,例如
x = c("2024-01-05 11:12:13 UTC", "2024-01-10 12:13:14 CET", "2024-01-15 07:08:09 EST")
如何获取有关每个元素的时区的信息,并使用它将这些数据转换为一个“通用”时区,例如“世界标准时间”? 首选使用
{base}
或 {lubridate}
的解决方案。
dtf <-
tibble(
x <- c("2024-01-05 11:12:13 UTC", "2024-01-10 12:13:14 CET", "2024-01-15 07:08:09 EST")
y <- str_extract(x, "[^ ]+$")
)
dtf %>%
map(
y, ~ as_datetime(x, tz = y)
)
给出
NULL
值。
有趣。我对
lubridate::as_date()
了解不多,我更喜欢lubridate::ymd_hms()
。在 lubridate::ymd_hms()
(或 parse_date_time()
) 中, tz
参数的长度为 1。您与map
走在正确的道路上。
我用
with_tz(tzone="EST")
做了我的示例来演示 UTC 表示的替代方案。
library(tidyverse)
dtf <-
tibble(
x <- c("2024-01-05 11:12:13 UTC", "2024-01-10 12:13:14 CET", "2024-01-15 07:08:09 EST")
y <- str_extract(x, "[^ ]+$")
)
map2(dtf$x, dtf$y, \(x,y) ymd_hms(x, tz= y) %>%
with_tz(tzone="EST")) %>%
list_c()