如何将天数添加到 R 中的 POSIXct 对象

How to add days to a POSIXct object in R

我想将特定日期添加到 POSIXct 对象。我尝试了下面的方法

library(lubridate)
input_time = as.POSIXct("2018-05-05T14:14:05")
input_time +  lubridate::days(1) 

这给出了没有小时和秒 (14:14:05) 的输出“2018-05-06 UTC”。我希望它的格式与 input_time (2018-05-06T14:14:05) 相同。如何保留小时和秒信息

as.POSIXct 未测试您的时间格式。这就是你得到这个结果的原因。

您可以使用以下格式来获得正确的:

library(lubridate)

# note the format option to get it correct
input_time = as.POSIXct("2018-05-05T14:14:05", format = "%Y-%m-%dT%H:%M:%OS")
input_time + lubridate::days(1)

[1] "2018-05-06 14:14:05 UTC"

或者只使用 lubridate 中的所有函数:

input_time <- lubridate::ymd_hms("2018-05-05T14:14:05")
input_time + lubridate::days(1)

[1] "2018-05-06 14:14:05 UTC"

只需正确格式化并加上一天中的秒数即可。

as.POSIXct("2018-05-05T14:14:05", format="%Y-%m-%dT%T") + 1*60*60*24
# [1] "2018-05-06 14:14:05 CEST"

我会尝试使用 as.POSIXlt 而不是 as.POSIXct。 POSIXlt 将 data/time 存储为元素列表:

new_date<-input_time
new_date$mday<-input_time$mday+1
new_date

如下所示格式化 input_time 并添加时区(例如 GMT):

input_time = as.POSIXlt("2018-05-05T14:14:05", format='%Y-%m-%dT %H:%M:%S', tz="GMT")