如何将UTC中的日期和时间转换为R中的本地时间?

如何将UTC中的日期和时间转换为R中的本地时间?,r,date,datetime,time,timezone,R,Date,Datetime,Time,Timezone,我有一个数据帧(vlinder),如下所示,其中日期和时间戳(UTC)在单独的列中: date time.utc variable 1/04/2020 0:00:00 12 1/04/2020 0:05:00 54 在第一步中,我使用以下代码将date和time变量组合到一个名为dateandtime的列中: vlinder$dateandtime <- paste(vlinder$date, vlinder$time.utc) 我想将UTC时间转换为本地时间(

我有一个数据帧(
vlinder
),如下所示,其中日期和时间戳(UTC)在单独的列中:

date      time.utc variable  
1/04/2020 0:00:00  12  
1/04/2020 0:05:00  54 
在第一步中,我使用以下代码将
date
time
变量组合到一个名为
dateandtime
的列中:

vlinder$dateandtime <- paste(vlinder$date, vlinder$time.utc)
我想将UTC时间转换为本地时间(即CEST,因此时差为2小时)

我试着使用下面的代码,但我得到了完全不同的东西

vlinder$dateandtime <- as.POSIXct(vlinder$dateandtime, tz = "UTC")
vlinder$dateandtime.cest <- format(vlinder$dateandtime, tz = "Europe/Brussels", usetz = TRUE) 
我怎样才能解决这个问题?
非常感谢

as.POSIXct的默认格式要求按年-月-日排序的日期。因此,2020年4月1日被转换为第1年的4月20日

您只需将时间格式添加到
as.POSIXct

vlinder$dateandtime <- as.POSIXct(vlinder$dateandtime, tz = "UTC", format = "%d/%m/%Y %H:%M:%S")

format(vlinder$dateandtime, tz = "Europe/Brussels", usetz = TRUE) 

vlinder$dateandtime这里有一个
lubridate
tidyverse
答案。一些数据整理、数据类型更改,然后bam。检查有效时区(
tz
)的lubridate::OlsonNames()。(我不能肯定我选择了正确的
tz

date         time.utc variable   dateandtime   dateandtime.cest
1/04/2020    0:00:00  12         0001-04-20    0001-04-20 00:17:30 LMT
1/04/2020    0:05:00  54         0001-04-20    0001-04-20 00:17:30 LMT
vlinder$dateandtime <- as.POSIXct(vlinder$dateandtime, tz = "UTC", format = "%d/%m/%Y %H:%M:%S")

format(vlinder$dateandtime, tz = "Europe/Brussels", usetz = TRUE) 
library(tidyverse)
library(lubridate)

df <- read.table(header = TRUE, 
                 text = "date      time.utc variable 
                        1/04/2020 00:00:00  12  
                        1/04/2020 00:05:00  54")


df <- df %>%
  mutate(date = mdy(date),
         datetime_utc = as_datetime(paste(date, time.utc)),
         datetime_cest = as_datetime(datetime_utc, tz = 'Europe/Brussels'))
        date time.utc variable        datetime_utc       datetime_cest
1 2020-01-04 00:00:00       12 2020-01-04 00:00:00 2020-01-04 01:00:00
2 2020-01-04 00:05:00       54 2020-01-04 00:05:00 2020-01-04 01:05:00