@@ -49,17 +49,17 @@ def localize(dt: datetime, lat: float, lon: float, offset: float = None, is_dst:
4949def to_datetime (dt : str | float | datetime , lat : float = None , lon : float = None , offset : float = None , is_dst : bool = None ) -> datetime :
5050 """ Convert an unknown into a datetime. Unknowns can be either an
5151 ISO-formatted string, a Julian Date, or already a datetime. """
52- no_coords = lat is None or lon is None
52+ no_tz = ( lat is None or lon is None ) and offset is None
5353 if isinstance (dt , str ):
5454 date_time = datetime .fromisoformat (dt )
55- return date_time .replace (tzinfo = ZoneInfo ('UTC' )) if no_coords and offset is None else localize (date_time , lat , lon , offset , is_dst )
55+ return date_time .replace (tzinfo = ZoneInfo ('UTC' )) if no_tz else localize (date_time , lat , lon , offset , is_dst )
5656 if isinstance (dt , float ):
5757 ut = swe .revjul (dt )
5858 time = convert .dec_to_dms (ut [3 ])[1 :]
5959 date_time = datetime (* ut [:3 ], * time , tzinfo = ZoneInfo ('UTC' ))
60- return date_time if no_coords else date_time .astimezone (get_timezone (lat , lon , offset ))
60+ return date_time if no_tz else date_time .astimezone (get_timezone (lat , lon , offset ))
6161 if isinstance (dt , datetime ):
62- if no_coords :
62+ if no_tz :
6363 return dt .replace (tzinfo = ZoneInfo ('UTC' )) if dt .tzinfo is None else dt
6464 else :
6565 return localize (dt , lat , lon , offset , is_dst )
0 commit comments