Skip to content

Commit 62e3d63

Browse files
committed
Add support for european dates in header files.
1 parent a629039 commit 62e3d63

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

wfdb/io/_header.py

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
10001027
def _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

Comments
 (0)