From 107c8f63c91aa1447fc6834761c6368754c27401 Mon Sep 17 00:00:00 2001 From: William Chen <136950159+Cuiliam@users.noreply.github.com> Date: Thu, 26 Sep 2024 16:27:09 -0400 Subject: [PATCH 1/2] Update basic.py to include "SleepUntilTask" --- tasks/basic.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tasks/basic.py b/tasks/basic.py index eff88f7..bbdcff3 100644 --- a/tasks/basic.py +++ b/tasks/basic.py @@ -18,7 +18,31 @@ def __init__(self, seconds: int, *args, **kwargs): def run(self): time.sleep(self.seconds) return self.seconds + +class SleepUntilTask(Task): + def __init__(self, target_date_str: str, *args, **kwargs): + self.target_date_str = target_date_str + super().__init__(*args, **kwargs) + def run(self): + current_date = datetime.now().strftime("%Y-%m-%d") + target_datetime_str = f"{current_date} {target_date_strrr}" + target_datetime = datetime.strptime(target_datetime_str, "%Y-%m-%d %H:%M") + + #Get current time + current_time = datetime.now() + + # Calculate the number of seconds to sleep + sleep_seconds = (target_datetime - current_time).total_seconds() + + # Only sleep if the target time is in the future + if sleep_seconds > 0: + print(f"Sleeping for {sleep_seconds:.2f} seconds until {target_datetime}") + time.sleep(sleep_seconds) + return sleep_seconds + else: + print("The target time is in the past. No need to sleep.") + return 0 class ShellCommand(Task): def __init__(self, command: list[str], *args, **kwargs): From d2211c4fcae9534e14d00a729b064a8408a8f2a4 Mon Sep 17 00:00:00 2001 From: William Chen <136950159+Cuiliam@users.noreply.github.com> Date: Fri, 27 Sep 2024 16:06:12 -0400 Subject: [PATCH 2/2] Update basic.py to have SleeupUntilTask input datetime object --- tasks/basic.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/tasks/basic.py b/tasks/basic.py index bbdcff3..fdb1cdc 100644 --- a/tasks/basic.py +++ b/tasks/basic.py @@ -19,25 +19,22 @@ def run(self): time.sleep(self.seconds) return self.seconds + class SleepUntilTask(Task): - def __init__(self, target_date_str: str, *args, **kwargs): - self.target_date_str = target_date_str + def __init__(self, target_datetime: datetime, *args, **kwargs): + self.target_datetime = target_datetime super().__init__(*args, **kwargs) def run(self): - current_date = datetime.now().strftime("%Y-%m-%d") - target_datetime_str = f"{current_date} {target_date_strrr}" - target_datetime = datetime.strptime(target_datetime_str, "%Y-%m-%d %H:%M") - - #Get current time + # Get current time current_time = datetime.now() # Calculate the number of seconds to sleep - sleep_seconds = (target_datetime - current_time).total_seconds() + sleep_seconds = (self.target_datetime - current_time).total_seconds() # Only sleep if the target time is in the future if sleep_seconds > 0: - print(f"Sleeping for {sleep_seconds:.2f} seconds until {target_datetime}") + print(f"Sleeping for {sleep_seconds:.2f} seconds until {self.target_datetime}") time.sleep(sleep_seconds) return sleep_seconds else: