@@ -27,15 +27,16 @@ def parse_datetime(epoch):
2727 Returns:
2828 parsed_epoch (DateTime): Parsed epoch.
2929 """
30+ ymd_fmt = "%Y-%m-%d" if epoch .count ("-" ) == 2 else "%Y-%j"
3031 if "." in epoch :
3132 return dt .datetime .strptime (
3233 epoch .replace ("Z" , "" )[:epoch .index ("." )+ 7 ].strip (),
33- "%Y-%m-%dT %H:%M:%S.%f"
34+ f" { ymd_fmt } T %H:%M:%S.%f"
3435 )
3536 else :
3637 return dt .datetime .strptime (
3738 epoch .replace ("Z" , "" ).strip (),
38- "%Y-%m-%dT %H:%M:%S"
39+ f" { ymd_fmt } T %H:%M:%S"
3940 )
4041
4142
@@ -48,7 +49,7 @@ def parse_utc(epoch, metadata):
4849 Returns:
4950 parsed_epoch (Time): UTC epoch.
5051 """
51- return Time (epoch , format = "isot " , scale = "utc" )
52+ return Time (parse_datetime ( epoch ) , format = "datetime " , scale = "utc" )
5253
5354
5455def parse_epoch (epoch , metadata ):
@@ -65,14 +66,15 @@ def parse_epoch(epoch, metadata):
6566 this case, time calculations may be inaccurate.
6667 """
6768 time_system = metadata ["TIME_SYSTEM" ].lower ()
69+ dt_epoch = parse_datetime (epoch )
6870 if time_system in Time .SCALES :
69- parsed_epoch = Time (epoch , format = "isot " , scale = time_system )
71+ parsed_epoch = Time (dt_epoch , format = "datetime " , scale = time_system )
7072 else :
7173 warnings .warn (
7274 f"Unsupported TIME_SYSTEM '{ time_system } ', falling back to "
7375 f"DateTime. Use caution with time calculations."
7476 )
75- parsed_epoch = parse_datetime ( epoch )
77+ parsed_epoch = dt_epoch
7678 return parsed_epoch
7779
7880
0 commit comments