Есть ли функция или элегантный способ преобразования времени в удобную для пользователя строку времени дня?
Например, если сейчас 9 утра, то
> time_of_day(Sys.time()) [1] "morning"
Если было 15:00, он вернет
> time_of_day(Sys.time()) [1] "afternoon"
Ронак меня опередил, но вот вариант с использованием lubridate и оператора ifelse:
time_day <- function(current_time) { ifelse(am(current_time) == 'TRUE', 'morning', 'afternoon') } time_day(Sys.time())
Я не знаю, существует ли такая функция, но было бы нетрудно написать одну из своих собственных. Вот способ, основанный на часах дня.
time_of_day <- function(time) { hr <- lubridate::hour(time) dplyr::case_when(hr > 6 & hr < 12 ~ 'morning', hr >= 12 & hr < 16 ~ 'afternoon', hr >= 16 & hr <= 20 ~ 'evening', TRUE ~ 'night') } time_of_day(Sys.time()) #[1] "morning"