POSIXct
-классированные объекты внутренне являются числовыми значениями, которые допускают числовые вычисления.POSIXlt
-объекты являются внутренне списками.К сожалению для ваших желаний, Ops.POSIXt
(что называется, когда вы используете "+") приводит к POSIXct с этим кодом:
if (inherits(e1, "POSIXlt") || is.character(e1))
e1 <- as.POSIXct(e1)
К счастью, если вы просто хотите, и час естьУдобная альтернатива добавлению 3600. Вместо этого используйте структуру списка и добавьте 1 к элементу часа:
> my.lt$hour <- my.lt$hour +1
> my.lt
[1] "2010-01-09 23:00:00"
Этот подход очень удобен, когда вы хотите избежать острых вопросов об изменениях летнего времени, по крайней мере, если вы хотите добавитьдней, чтобы дать вам одно и то же время суток.
Редактировать (добавив код @ sunt, демонстрирующий, что Ops.POSIXlt
осторожен со «переполнением» времени.))
my.lt = as.POSIXlt("2010-01-09 23:05:00")
my.lt$hour=my.lt$hour+1
my.lt
# [1] "2010-01-10 00:05:00"