62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
from datetime import time, datetime, timedelta
|
|
|
|
def is_working_hours(date = datetime.now()):
|
|
if date.weekday() >= 5:
|
|
return False
|
|
|
|
start = time(8, 0, 0)
|
|
end = time(18, 0, 0)
|
|
|
|
current_time = date.time()
|
|
return start <= current_time <= end
|
|
|
|
def potential_midday_upload(date = datetime.now()):
|
|
if date.weekday() >= 5:
|
|
return False
|
|
|
|
midday_upload_time = time(14, 0, 0)
|
|
|
|
current_time = date.time()
|
|
return midday_upload_time <= current_time
|
|
|
|
def next_working_hour(date = datetime.now()):
|
|
if is_working_hours(date):
|
|
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))) |