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

3
我想给POSIXct对象添加特定的日期。我尝试了以下方法:
library(lubridate)
input_time = as.POSIXct("2018-05-05T14:14:05")
input_time +  lubridate::days(1) 

这样输出的结果是"2018-05-06 UTC",但没有小时和秒数(14:14:05)。我希望它的格式与输入时间相同(2018-05-06T14:14:05)。如何保留小时和秒数信息?

3个回答

4

你的时间格式没有被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"

2

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

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

0

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

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

将输入时间格式化如下,并添加时区(例如,GMT):
input_time = as.POSIXlt("2018-05-05T14:14:05", format='%Y-%m-%dT %H:%M:%S', tz="GMT")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接