包括时移时的 lubridate ymd_hms() 奇怪的输出
lubridate ymd_hms() strange output when time shift is included
我对 lubridate package
的 ymd_hms()
的输出感到困惑。
我从网上抓取了一些数据,其中包含以下格式的时间戳:
time_series <- c("2019-10-17 23:43:50+00:00", "2019-10-17 23:43:50+01:00")
如果我在时间序列上使用 ymd_hms()
,我会得到以下结果:
library(ludridate)
ymd_hms(time_series)
# [1] "2019-10-17 23:43:50 UTC" "2019-10-17 22:43:50 UTC"
为什么第二个时间戳提前一小时转换?根据我的理解以及在我抓取数据的网站上,应该是一小时后 (+01:00):
#[1] "2019-10-17 23:43:50 UTC" "2019-10-18 00:43:50 UTC"
我错了什么?以及如何更改 ymd_hms() 的行为以获得所需的输出?
尽管这是一个老问题。 Piotr K 是完全正确的。时间始终根据协调世界时 (UTC) 进行通信。所以时间戳 hh:mm:ss+01:00
表示 UTC + 1 小时。由于 ymd_hms()
默认情况下将所有时间戳转换为 UTC,因此上述行为是绝对正确的。
我对 lubridate package
的 ymd_hms()
的输出感到困惑。
我从网上抓取了一些数据,其中包含以下格式的时间戳:
time_series <- c("2019-10-17 23:43:50+00:00", "2019-10-17 23:43:50+01:00")
如果我在时间序列上使用 ymd_hms()
,我会得到以下结果:
library(ludridate)
ymd_hms(time_series)
# [1] "2019-10-17 23:43:50 UTC" "2019-10-17 22:43:50 UTC"
为什么第二个时间戳提前一小时转换?根据我的理解以及在我抓取数据的网站上,应该是一小时后 (+01:00):
#[1] "2019-10-17 23:43:50 UTC" "2019-10-18 00:43:50 UTC"
我错了什么?以及如何更改 ymd_hms() 的行为以获得所需的输出?
尽管这是一个老问题。 Piotr K 是完全正确的。时间始终根据协调世界时 (UTC) 进行通信。所以时间戳 hh:mm:ss+01:00
表示 UTC + 1 小时。由于 ymd_hms()
默认情况下将所有时间戳转换为 UTC,因此上述行为是绝对正确的。