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
