getValidHours method
Handling precision to this level seems unnecessary
All the checks above is for when allowPastDates is false and the metric is close the the metric from current time, hence control it and give updated time, but in getValidDays, we handle it so that the current day is not included so metric can't come close. Returns list of possible hours
Implementation
/// Returns list of possible hours
List<int> getValidHours(int day) => _hours;