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))
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
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