aboutsummaryrefslogtreecommitdiff
path: root/src/primitive/datetime.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/primitive/datetime.rs')
-rw-r--r--src/primitive/datetime.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/primitive/datetime.rs b/src/primitive/datetime.rs
index cbcdd51..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::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 => {