view datetimemath.py @ 43:b5d3d9a8c83d

new graph of just the events happening now
author drewp@bigasterisk.com
date Mon, 19 Feb 2024 13:53:46 -0800
parents e2209226b001
children
line wrap: on
line source

import datetime
from typing import Iterable, List, Tuple, cast

import dateutil.parser
from dateutil.tz.tz import tzlocal

from localtypes import Record


def dayRange(days: float) -> Tuple[datetime.datetime, datetime.datetime]:
    now = datetime.datetime.now(tzlocal())
    start = now - datetime.timedelta(hours=12)
    end = now + datetime.timedelta(days=days)
    return start, end


def limitDays(recs: Iterable[Record], days: float) -> List[Record]:
    start, end = dayRange(days)
    start = start - datetime.timedelta(hours=12)
    # incomplete
    return [r for r in recs if r['startTime'] < end and r['endTime'] > start]


# just a typing fix
def parse(s: str, **kw) -> datetime.datetime:
    return cast(datetime.datetime, dateutil.parser.parse(s, **kw))