средняя точка двух date_times, округленная до ближайшего часа с сохранением hms - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь получить среднюю точку двух date_times, округленную до ближайшего часа с сохранением hms в выходных данных.

Например, здесь я хочу, чтобы средняя точка была 2016-01-15 00:00:00

library(lubridate)
Sys.setenv(TZ="Europe/London") #needing to establish TZ/use other TZs later on

start_datetime <- as.POSIXct("2016-01-13 08:00:00", tz = "Europe/London")
end_datetime   <- as.POSIXct("2016-01-16 15:00:00", tz = "Europe/London")

# using R's internal setting of 1970-01-01, gets 2016-01-14 23:30:00, 
# which seems right
midpoint <- as.POSIXct((as.numeric(end_datetime) + 
                      as.numeric(start_datetime)) / 2, origin = '1970-01-01') 

#gets 2016-01-15 only (no hms):
midpoint_nearesthour_fail1 <- round_date(midpoint, "hours") #lubridate function

#gets 2016-01-15 only (no hms):
midpoint_nearesthour_fail2 <- round(midpoint, "hours")  #base R function

#gets 2016-01-14 23:30:00 as above (as expected, with no rounding)
#but interestingly, if all three "Europe/London" replaced with "America/Los_Angeles",:
#gets: 2016-01-15 07:30:00
midpoint_nearesthour_fail3 <- as_datetime(midpoint) 
...