Skip to content

interval_to_timedelta

yohou.utils.validation.interval_to_timedelta(interval)

Convert fixed interval to timedelta, or None for variable intervals.

Parameters

Name Type Description Default
interval str

Interval string.

required

Returns

Type Description
timedelta or None

Timedelta for fixed intervals, None for variable intervals.

Examples

>>> interval_to_timedelta("1d")
datetime.timedelta(days=1)
>>> interval_to_timedelta("2h")
datetime.timedelta(seconds=7200)
>>> interval_to_timedelta("1mo") is None
True
>>> interval_to_timedelta("100ms")
datetime.timedelta(microseconds=100000)
>>> interval_to_timedelta("50us")
datetime.timedelta(microseconds=50)

See Also

Source Code

Show/Hide source
def interval_to_timedelta(interval: str) -> timedelta | None:
    r"""Convert fixed interval to timedelta, or None for variable intervals.

    Parameters
    ----------
    interval : str
        Interval string.

    Returns
    -------
    timedelta or None
        Timedelta for fixed intervals, None for variable intervals.

    Examples
    --------
    >>> interval_to_timedelta("1d")
    datetime.timedelta(days=1)
    >>> interval_to_timedelta("2h")
    datetime.timedelta(seconds=7200)
    >>> interval_to_timedelta("1mo") is None
    True
    >>> interval_to_timedelta("100ms")
    datetime.timedelta(microseconds=100000)
    >>> interval_to_timedelta("50us")
    datetime.timedelta(microseconds=50)

    See Also
    --------
    - [`parse_interval`][yohou.utils.validation.parse_interval] : Parse interval string into multiplier and unit.
    - [`add_interval`][yohou.utils.validation.add_interval] : Add intervals to a datetime value.
    - [`check_interval_consistency`][yohou.utils.validation.check_interval_consistency] : Validate uniform time spacing.

    """
    multiplier, unit = parse_interval(interval)

    if unit == "d":
        return timedelta(days=multiplier)
    elif unit == "h":
        return timedelta(hours=multiplier)
    elif unit == "m":
        return timedelta(minutes=multiplier)
    elif unit == "s":
        return timedelta(seconds=multiplier)
    elif unit == "w":
        return timedelta(weeks=multiplier)
    elif unit == "ms":
        return timedelta(milliseconds=multiplier)
    elif unit == "us":
        return timedelta(microseconds=multiplier)
    else:
        # Variable-length interval, cannot convert to timedelta
        return None