Source code for src.utils.datetimeutils

import time
from datetime import datetime, timezone
import pytz


[docs] def convert_utc_datetime_to_est_timezone_aware_datetime(utc_datetime: datetime) -> datetime: """ Converts a provided UTC datetime object into an EST timezone aware/normalized datetime object in Zulu notation. .. todo:: Finish docstrings. """ est_datetime: datetime est = pytz.timezone("US/Eastern") est_datetime = est.normalize(utc_datetime.astimezone(est)) return est_datetime
[docs] def convert_est_datetime_to_aware_utc_datetime(est_datetime: datetime) -> datetime: """ .. todo:: Docstrings. """ utc_datetime: datetime utc = pytz.timezone('UTC') utc_datetime = utc.normalize(est_datetime.astimezone(utc)) return utc_datetime
[docs] def military_time_to_edt_datetime_aware(military_time: str) -> datetime: """ .. todo:: Docstrings. """ datetime_edt_aware: datetime military_time_int = int(military_time) military_time_hours_int = int(military_time[0:2]) military_time_minutes_int = int(military_time[2:4]) est = pytz.timezone('US/Eastern') right_now = datetime.now(tz=est) datetime_edt_aware: datetime = right_now.replace( hour=military_time_hours_int, minute=military_time_minutes_int, second=0, microsecond=0 ) datetime_edt_aware.astimezone(est) return datetime_edt_aware
[docs] def military_time_to_cest_datetime_aware(military_time: str) -> datetime: """ .. todo:: Docstrings. """ military_time_hours_int = int(military_time[0:2]) military_time_minutes_int = int(military_time[2:4]) cest = pytz.timezone('Europe/Brussels') right_now = datetime.now(tz=cest) datetime_cest_aware: datetime = right_now.replace( hour=military_time_hours_int, minute=military_time_minutes_int, second=0, microsecond=0 ) datetime_cest_aware.astimezone(cest) return datetime_cest_aware
[docs] def military_time_to_utc_datetime_aware(military_time: str) -> datetime: """ .. todo:: Docstrings. Notes: military time arrives as 24 hour HHMM format (e.g. 0800). """ datetime_utc_aware: datetime military_time_int = int(military_time) military_time_hours_int = int(military_time[0:2]) military_time_minutes_int = int(military_time[2:4]) if military_time_int >= 1200: military_time_with_postfix = f'{military_time[0:2]}:{military_time[2:4]} PM' else: military_time_with_postfix = f'{military_time[0:2]}:{military_time[2:4]} AM' EST = pytz.timezone('US/Eastern') right_now = datetime.now() right_now_EDT = EST.localize(dt=right_now, is_dst=True) datetime_edt_aware: datetime = right_now_EDT.replace(hour=military_time_hours_int, minute=military_time_minutes_int, second=0, microsecond=0, tzinfo=pytz.timezone('US/Eastern')) # military_datetime_with_postfix = datetime.strptime(military_time_with_postfix, "%I:%M %p") datetime_utc_aware: datetime = datetime_edt_aware.astimezone(tz=pytz.timezone('UTC')) return datetime_utc_aware
[docs] def seconds_until_datetime(date_time: datetime) -> float: """ .. todo:: Docstrings. """ remaining_seconds: float right_now: datetime = datetime.now(tz=pytz.timezone('US/Eastern')) delta = date_time - right_now remaining_seconds = delta.total_seconds() return remaining_seconds