Source code for gigl.src.common.utils.time
import datetime
from gigl.src.common.constants.time import DEFAULT_DATETIME_FORMAT
[docs]
def parse_formatted_datetime(
stringified_date: str, fmt: str = DEFAULT_DATETIME_FORMAT
) -> datetime.datetime:
return datetime.datetime.strptime(stringified_date, fmt)
[docs]
def format_datetime(dt: datetime.datetime, fmt: str = DEFAULT_DATETIME_FORMAT) -> str:
return dt.strftime(fmt)
[docs]
def current_formatted_datetime(fmt: str = DEFAULT_DATETIME_FORMAT) -> str:
"""
Returns:
str: current timezone aware utc datetime formatted as a string
as per provided date format string.
"""
return current_datetime().strftime(fmt)
[docs]
def current_datetime() -> datetime.datetime:
"""
Returns:
str: current timezone aware utc datetime.
"""
return datetime.datetime.now(datetime.timezone.utc)
[docs]
def is_datetime_str_format_valid(datetime_str: str, datetime_format: str) -> bool:
"""
Validates a datetime string with specified format. ex "%Y%m%d" for "YYYYmmdd"
Return True/False so users can decide to raise error or reformat string
:param datetime_str:
:param datetime_format:
:return:
"""
try:
datetime.datetime.strptime(datetime_str, datetime_format)
return True
except ValueError:
return False
except Exception as e:
return False