I think there may be a couple errors happening here, but at least one is that hms() is not parsing the times as they're written here: It expects to have seconds included, and the times only have hours and minutes.
Additionally, I find case_when() easier to use in these scenarios than if() statements. So what you're trying to accomplish could be done like so:
library(tidyverse)
library(lubridate)
# Sample data I created that may be similar to yours
football <- tibble(time = hm(c("05:00", "11:00", "16:00")))
football %>%
mutate(time_of_day = case_when(time >= hm("06:00") & time <= hm("12:00") ~ "Morning",
time > hm("12:00") & time <= hm("18:00") ~ "Afternoon",
TRUE ~ "Evening"))
Hope this helps!