润滑时区处理

Han*_* W. 5 r lubridate

我有以下字符串描述中欧夏令时间的日期和时间:“2021-09-23 12:00:00”。事实上,我有一整列这样的时间点。由于某些原因,我必须使用“lubridate”包中的函数来处理这些时间。使用 'as_datetime' 我得到

t0 = "2021-09-23 12:00:00"
t1 = as_datetime(t0); t1
## [1] "2021-09-23 12:00:00 UTC"
Run Code Online (Sandbox Code Playgroud)

也就是说,as_datetime使用给定的小时和分钟并添加通用时间“UTC”作为时区。提供时区 CEST 代替

t1 = as_datetime(t0, tz = "CEST"); t1
## [1] "2021-09-23 10:00:00 CEST"
Run Code Online (Sandbox Code Playgroud)

也就是说,改变时间,这是我不想要的。

我想要得到的(我真正需要的)是“2021-09-23 12:00:00 CEST”,即更改时区而不更改时间。

我尝试force_tzwith_tz,但这也不起作用。

我还想知道为什么 'lubridate' 将 12:00:00 UST 转换为 10:00:00 CEST,因为 CEST 与 GMT+2 相同,而 UTC 是 GMT+0,所以结果实际上应该是相反的大约。

谢谢你的帮助。

Tar*_*Jae 2

尝试:

t0 = "2021-09-23 12:00:00"


library(lubridate)
#1 

t1 = as_datetime(t0, tz = "Europe/Berlin")
[1] "2021-09-23 12:00:00 CEST"

or

#2
t1 = as_datetime(t0, tz = "CST6CDT")

[1] "2021-09-23 12:00:00 CDT"
Run Code Online (Sandbox Code Playgroud)