Это работает для меня в моем часовом поясе (CET):
library(lubridate)
ceiling_date(now(), "day") + hours(6)
floor_date(now(), "day") + hours(30)
Оба возвращают
[1] "2020-01-08 06:00:00 CET"
РЕДАКТИРОВАТЬ : Это также работает:
library(lubridate)
`tz<-`(today() + hours(30), "")
`tz<-`(Sys.Date() + hours(30), "")
Оба возвращаются (в моем местном часовом поясе)
[1] "2020-01-08 06:00:00 CET"
(Объяснение ниже)
Приложение
Интересно, что ответ Ронака Шаха с использованием Sys.Date()
, а также предложение Брайана использовать lubridate::today()
для переключения часового пояса на UT C:
Sys.Date() + 1 + lubridate::hours(6)
[1] "2020-01-08 06:00:00 UTC"
library(lubridate)
today() + hours(30)
[1] "2020-01-08 06:00:00 UTC"
, что не в соответствии с требованием OP по местному времени .
По-видимому, это происходит при принудительном приведении класса Date
к POSIXct
:
lubridate::hours()
возвращает объект Period
. При добавлении объекта Period
к объекту Date
кажется, что lubridate::as_datetime()
используется для приведения. as_datetime()
использует "UTC"
в качестве часового пояса по умолчанию. Часовой пояс может быть установлен впоследствии, например,
`tz<-`(today() + hours(30), "")