From 263b6a570cf12779d7c955065ff6004c966ff4ae Mon Sep 17 00:00:00 2001 From: Max Audron Date: Mon, 4 Jan 2021 18:22:27 +0100 Subject: fix parsing of datetime when value is -1 --- src/primitive/datetime.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/primitive') diff --git a/src/primitive/datetime.rs b/src/primitive/datetime.rs index f3ace1d..fadd6a5 100644 --- a/src/primitive/datetime.rs +++ b/src/primitive/datetime.rs @@ -76,10 +76,18 @@ impl Deserialize for OffsetDateTime { let zone = TimeSpec::from(zone as i8); + // Default to unix epoch when one of these is set to -1 + if julian_day == -1 || millis_of_day == -1 { + return Ok((pos, OffsetDateTime::unix_epoch())); + } + let offset: UtcOffset; match zone { TimeSpec::LocalUnknown | TimeSpec::LocalStandard | TimeSpec::LocalDST => { - offset = UtcOffset::try_current_local_offset()? + offset = UtcOffset::try_current_local_offset().unwrap_or_else(|_| { + log::warn!("could not get local offset defaulting to utc"); + UtcOffset::UTC + }) } TimeSpec::UTC => offset = UtcOffset::UTC, TimeSpec::OffsetFromUTC => { -- cgit v1.2.3