from datetime import time, datetime, timedelta def is_working_hours(date = datetime.now()): if date.weekday() >= 5: print("Its the weekend") return False start = time(8, 0, 0) end = time(18, 0, 0) current_time = date.time() print(f"Current {current_time}") return start <= current_time <= end def potential_midday_upload(date = datetime.now()): if date.weekday() >= 5: print("Its the weekend") return False midday_upload_time = time(14, 0, 0) current_time = date.time() print(f"Current {current_time} : {midday_upload_time}") return midday_upload_time <= current_time def next_working_hour(date = datetime.now()): if is_working_hours(date): print("Its already working hour") return date potential_start = date.replace(hour=8, minute=0, second=0, microsecond=0) if date > potential_start: potential_start += timedelta(days=1) while not is_working_hours(potential_start): potential_start += timedelta(days=1) return potential_start if __name__ == '__main__': # Test Times assert is_working_hours(datetime(2025, 6, 20, 16,54, 0)) assert is_working_hours(datetime(2025, 6, 20, 18,54, 0)) assert is_working_hours(datetime(2025, 6, 20, 19,0, 0)) assert not is_working_hours(datetime(2025, 6, 20, 19,1, 0)) assert is_working_hours(datetime(2025, 6, 20, 8,0, 0)) assert not is_working_hours(datetime(2025, 6, 20, 7,59, 59)) # Test Week Day assert not is_working_hours(datetime(2025, 6, 21, 16,54, 0)) assert not is_working_hours(datetime(2025, 6, 21, 18,54, 0)) assert not is_working_hours(datetime(2025, 6, 21, 19,0, 0)) assert not is_working_hours(datetime(2025, 6, 21, 19,1, 0)) assert not is_working_hours(datetime(2025, 6, 21, 8,0, 0)) assert not is_working_hours(datetime(2025, 6, 21, 7,59, 59)) print(next_working_hour(datetime(2025, 6, 20, 7,59, 59))) print(next_working_hour(datetime(2025, 6, 21, 7,59, 59))) print(next_working_hour(datetime(2025, 6, 22, 7,59, 59))) print(next_working_hour(datetime(2025, 6, 23, 7,59, 59))) print(next_working_hour(datetime(2025, 6, 24, 7,59, 59))) print(next_working_hour(datetime(2025, 6, 19, 19,1, 0))) print(next_working_hour(datetime(2025, 6, 20, 19,1, 0))) print(next_working_hour(datetime(2025, 6, 21, 19,1, 0))) print(next_working_hour(datetime(2025, 6, 22, 19,1, 0))) print(next_working_hour(datetime(2025, 6, 23, 19,1, 0)))