@@ -428,18 +428,36 @@ def _return_date(
428428
429429 def _format_datetime_range (self , date_str : str ) -> str :
430430 """
431- Convert a datetime range into a formatted string.
431+ Convert a datetime range string into a normalized UTC string for API requests .
432432
433433 Args:
434- date_tuple (str): A string containing two datetime values separated by a '/'.
434+ date_str (str): A string containing two datetime values separated by a '/'.
435435
436436 Returns:
437- str: A string formatted as 'YYYY-MM-DDTHH:MM:SS.sssZ /YYYY-MM-DDTHH:MM:SS.sssZ ', with '..' used if any element is None.
437+ str: A string formatted as 'YYYY-MM-DDTHH:MM:SSZ /YYYY-MM-DDTHH:MM:SSZ ', with '..' used if any element is None.
438438 """
439- start , end = date_str .split ("/" )
440- start = start .replace ("+01:00" , "Z" ) if start else ".."
441- end = end .replace ("+01:00" , "Z" ) if end else ".."
442- return f"{ start } /{ end } "
439+ if not isinstance (date_str , str ) or "/" not in date_str :
440+ return "../.."
441+ try :
442+ start , end = date_str .split ("/" , 1 )
443+ except Exception :
444+ return "../.."
445+
446+ def normalize (dt ):
447+ dt = dt .strip ()
448+ if not dt or dt == ".." :
449+ return ".."
450+ # Replace any timezone offset with 'Z'
451+ if dt .endswith ("Z" ):
452+ return dt
453+ if "+" in dt :
454+ return dt [: dt .index ("+" )] + "Z"
455+ if "-" in dt [10 :]: # skip date part, look for tz in time part
456+ idx = dt .index ("-" , 10 )
457+ return dt [:idx ] + "Z"
458+ return dt # fallback, return as-is
459+
460+ return f"{ normalize (start )} /{ normalize (end )} "
443461
444462 async def get_search (
445463 self ,
0 commit comments