@@ -997,6 +997,33 @@ def wfdb_strptime(time_string: str) -> datetime.time:
997997 return datetime .datetime .strptime (time_string , time_fmt ).time ()
998998
999999
1000+ def wfdb_strptime_date (date_string : str ) -> datetime .time :
1001+ """
1002+ Given a date string in an acceptable WFDB format, return
1003+ a datetime.date object.
1004+
1005+ Valid formats: d/m/y, d.m.y
1006+
1007+ Parameters
1008+ ----------
1009+ date_string : str
1010+ The date to be converted to a datetime.date object.
1011+
1012+ Returns
1013+ -------
1014+ datetime.date object
1015+ The date converted from str format.
1016+
1017+ """
1018+ try :
1019+ return datetime .datetime .strptime (date_string , "%d/%m/%Y" ).date ()
1020+ except ValueError :
1021+ pass
1022+
1023+ # European date format?
1024+ return datetime .datetime .strptime (date_string , "%d.%m.%Y" ).date ()
1025+
1026+
10001027def _parse_record_line (record_line : str ) -> dict :
10011028 """
10021029 Extract fields from a record line string into a dictionary.
@@ -1054,9 +1081,9 @@ def _parse_record_line(record_line: str) -> dict:
10541081 record_fields ["base_time" ]
10551082 )
10561083 elif field == "base_date" :
1057- record_fields ["base_date" ] = datetime . datetime . strptime (
1058- record_fields ["base_date" ], "%d/%m/%Y"
1059- ). date ()
1084+ record_fields ["base_date" ] = wfdb_strptime_date (
1085+ record_fields ["base_date" ]
1086+ )
10601087
10611088 # This is not a standard WFDB field, but is useful to set.
10621089 if record_fields ["base_date" ] and record_fields ["base_time" ]:
0 commit comments