@@ -713,10 +713,7 @@ def strptime(datetime_string: str, fmts: list[str]) -> datetime:
713
713
datetime_str = datetime_string .strip ()
714
714
for fmt in fmts :
715
715
try :
716
- #return datetime.datetime.strptime(datetime_str, fmt)
717
- retval = datetime .datetime .strptime (datetime_str , fmt )
718
- print (retval )
719
- return retval
716
+ return datetime .datetime .strptime (datetime_str , fmt )
720
717
except ValueError :
721
718
pass
722
719
raise ValueError (f"Unable to parse datetime string: { datetime_str } " )
@@ -741,9 +738,8 @@ def strptime_dcm_da_tm(dcm_data: dcm.Dataset, da_tag: TagType, tm_tag: TagType)
741
738
742
739
Parameters
743
740
----------
744
- dcm_data : dcm.FileDataset
741
+ dcm_data : dcm.Dataset
745
742
DICOM with header, e.g., as read by pydicom.dcmread.
746
- Objects with __getitem__ and have those keys with values properly formatted may also work
747
743
da_tag: str
748
744
Dicom tag with DA value representation
749
745
tm_tag: str
@@ -760,8 +756,8 @@ def strptime_dcm_da_tm(dcm_data: dcm.Dataset, da_tag: TagType, tm_tag: TagType)
760
756
761
757
datetime_obj = datetime .datetime .combine (date .date (), time .time ())
762
758
763
- if ( 0x0008 , 0x0201 ) in dcm_data :
764
- utc_offset = dcm_data [ 0x0008 , 0x0201 ] .value
759
+ if utc_offset_dcm := dcm_data . get ([ 0x0008 , 0x0201 ]) :
760
+ utc_offset = utc_offset_dcm .value
765
761
datetime_obj = datetime_utc_offset (datetime_obj , utc_offset ) if utc_offset else datetime_obj
766
762
return datetime_obj
767
763
@@ -783,9 +779,13 @@ def strptime_dcm_dt(dcm_data: dcm.Dataset, dt_tag: TagType) -> datetime:
783
779
"%Y" , "%Y%m" , "%Y%m%d" , "%Y%m%d%H" , "%Y%m%d%H%M" , "%Y%m%d%H%M%S" , "%Y%m%d%H%M%S.%f" ]
784
780
datetime_obj = strptime (datetime_str , fmts )
785
781
786
- if not datetime_obj .tzinfo and (0x0008 , 0x0201 ) in dcm_data :
787
- utc_offset = dcm_data [0x0008 , 0x0201 ].value
788
- datetime_obj = datetime_utc_offset (datetime_obj , utc_offset ) if utc_offset else datetime_obj
782
+ if utc_offset_dcm := dcm_data .get ([0x0008 , 0x0201 ]):
783
+ if utc_offset := utc_offset_dcm .value :
784
+ datetime_obj2 = datetime_utc_offset (datetime_obj , utc_offset )
785
+ if datetime_obj .tzinfo and datetime_obj2 != datetime_obj :
786
+ lgr .warning ("Unexpectedly previously parsed datetime %s contains zoneinfo which is different from the one obtained from DICOMs UTFOffset field: %s" , datetime_obj , datetime_obj2 )
787
+ else :
788
+ datetime_obj = datetime_obj2
789
789
return datetime_obj
790
790
791
791
0 commit comments