Как добавить дни к объекту POSIXct в R

#r #date #time #posixct

#r #Дата #время #posixct

Вопрос:

Я хотел бы добавить определенные дни к объекту POSIXct. Я попробовал следующий метод

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

Это дает результат как «2018-05-06 UTC» без часов и секунд (14:14:05). Я хотел бы иметь его в том же формате, что и input_time (2018-05-06T14:14:05). Как сохранить информацию о часах и секундах

Ответ №1:

Ваш формат времени не проверяется 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"
  

Ответ №3:

Я бы попытался использовать as.POSIXlt вместо as.POSIXct. POSIXlt хранит данные / время в виде списка элементов:

 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")