Beispiel #1
0
def test_iso8601s(data: DataObject, tzinfo: tzinfo | None,
                  end_datetime: dt.datetime | None) -> None:
    iso8601 = data.draw(iso8601s(tzinfo=tzinfo, end_datetime=end_datetime))
    assert isinstance(iso8601, str)
    datetime = dt.datetime.fromisoformat(iso8601)
    assert datetime <= (dt.datetime.now(tz=tzinfo) if end_datetime is None else
                        end_datetime.replace(tzinfo=tzinfo))
Beispiel #2
0
    def correct_time(self,
                     conv_time: datetime.datetime | None = None,
                     timezone_: str = "system") -> datetime.datetime:
        if not conv_time:
            conv_time = datetime.datetime.now()
        if timezone_ == "system" and conv_time.tzinfo is None:
            tz_obj = self.timezone
        elif conv_time.tzinfo is not None:
            tz_obj = pytz.timezone(conv_time.tzinfo.tzname(
                conv_time))  # conv_time.tzinfo isn't a pytz.tzinfo object
        else:
            tz_obj = pytz.timezone(timezone_)

        try:
            return tz_obj.localize(conv_time.replace(tzinfo=None)).astimezone(
                self.display_timezone)
        except AttributeError:  # TODO: Sometimes on local env throws exception (AttributeError: 'zoneinfo.ZoneInfo' object has no attribute 'localize') / potential fix?
            return conv_time
Beispiel #3
0
def _api_time_format(date_time: datetime.datetime | None) -> str | None:
    """Convert a datetime to the api string format."""
    return date_time.isoformat("T") if date_time else None