Accept dates with milliseconds in them

This commit is contained in:
Andrew Godwin 2022-12-04 07:30:49 -07:00
parent 7a7907a6df
commit 864b730164
1 changed files with 10 additions and 3 deletions

View File

@ -367,6 +367,7 @@ schemas = {
} }
DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ" DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ"
DATETIME_MS_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ"
def builtin_document_loader(url: str, options={}): def builtin_document_loader(url: str, options={}):
@ -440,9 +441,15 @@ def format_ld_date(value: datetime.datetime) -> str:
def parse_ld_date(value: Optional[str]) -> Optional[datetime.datetime]: def parse_ld_date(value: Optional[str]) -> Optional[datetime.datetime]:
if value is None: if value is None:
return None return None
try:
return datetime.datetime.strptime(value, DATETIME_FORMAT).replace( return datetime.datetime.strptime(value, DATETIME_FORMAT).replace(
tzinfo=datetime.timezone.utc tzinfo=datetime.timezone.utc
) )
except ValueError:
return datetime.datetime.strptime(value, DATETIME_MS_FORMAT).replace(
tzinfo=datetime.timezone.utc,
microsecond=0,
)
def media_type_from_filename(filename): def media_type_from_filename(filename):