使用“lubridate”转换变量中的多个时区

问题描述 投票:0回答:1

数据

我有一个时间向量,每个时间都位于不同的时区,例如

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
值。

r timezone lubridate
1个回答
0
投票

有趣。我对

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()
© www.soinside.com 2019 - 2024. All rights reserved.