diff options
| author | Scott Gasch <[email protected]> | 2021-10-28 11:51:22 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2021-10-28 11:51:22 -0700 |
| commit | 7e6972bc7c8e891dc669645fa5969ed76fe38314 (patch) | |
| tree | eec2f61e92f577e048602e5ced8d4a0cc471da6c /datetime_utils.py | |
| parent | ed47f1a0c31184280a303563237e34c0e53437d7 (diff) | |
Moving smart lights into smart_home to prepare for adding
outlets and cameras.
Diffstat (limited to 'datetime_utils.py')
| -rw-r--r-- | datetime_utils.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/datetime_utils.py b/datetime_utils.py index 310ffe1..7c5516b 100644 --- a/datetime_utils.py +++ b/datetime_utils.py @@ -62,6 +62,24 @@ def replace_timezone(dt: datetime.datetime, ) +def replace_time_timezone(t: datetime.time, + tz: datetime.tzinfo) -> datetime.time: + """ + Replaces the timezone on a datetime.time directly without performing + any translation. + + >>> t = datetime.time(8, 15, 12, 0, pytz.UTC) + >>> t.tzname() + 'UTC' + + >>> t = replace_time_timezone(t, pytz.timezone('US/Pacific')) + >>> t.tzname() + 'US/Pacific' + + """ + return t.replace(tzinfo=tz) + + def translate_timezone(dt: datetime.datetime, tz: datetime.tzinfo) -> datetime.datetime: """ @@ -115,6 +133,42 @@ def date_to_datetime(date: datetime.date) -> datetime.datetime: ) +def time_to_datetime_today(time: datetime.time) -> datetime.datetime: + """ + Given a time, returns that time as a datetime with a date component + set based on the current date. If the time passed is timezone aware, + the resulting datetime will also be (and will use the same tzinfo). + If the time is timezone naive, the datetime returned will be too. + + >>> t = datetime.time(13, 14, 0) + >>> d = now_pacific().date() + >>> dt = time_to_datetime_today(t) + >>> dt.date() == d + True + + >>> dt.time() == t + True + + >>> dt.tzinfo == t.tzinfo + True + + >>> dt.tzinfo == None + True + + >>> t = datetime.time(8, 15, 12, 0, pytz.UTC) + >>> t.tzinfo == None + False + + >>> dt = time_to_datetime_today(t) + >>> dt.tzinfo == None + False + + """ + now = now_pacific() + tz = time.tzinfo + return datetime.datetime.combine(now, time, tz) + + def date_and_time_to_datetime(date: datetime.date, time: datetime.time) -> datetime.datetime: """ |
