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