首页 > 解决方案 > 如何将日期和时间从 UTC 转换为 R 中的本地时间?

问题描述

我有一个vlinder如下所示的数据框 (),其中日期和时间戳(以 UTC 为单位)位于不同的列中:

date      time.utc variable  
1/04/2020 0:00:00  12  
1/04/2020 0:05:00  54 

第一步,我将datetime变量组合到一个列中,dateandtime使用以下代码调用:

vlinder$dateandtime <- paste(vlinder$date, vlinder$time.utc)

这导致 dataframe 中有一个额外的列vlinder

date      time.utc variable  dateandtime
1/04/2020 0:00:00  12        1/04/2020 0:00:00
1/04/2020 0:05:00  54        1/04/2020 0:05:00

我想将 UTC 时间转换为本地时间(即 CEST,因此时差为 2 小时)。

我尝试使用以下代码,但我得到了完全不同的东西。

vlinder$dateandtime <- as.POSIXct(vlinder$dateandtime, tz = "UTC")
vlinder$dateandtime.cest <- format(vlinder$dateandtime, tz = "Europe/Brussels", usetz = TRUE) 

这导致:

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

我该如何解决这个问题?非常感谢!

标签: rdatedatetimetimetimezone

解决方案


默认格式as.POSIXct需要按年-月-日排序的日期。因此,日期 01/04/2020 被转换为第 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) 

推荐阅读