use serde::{Deserialize, Deserializer, Serializer}; use chrono::{DateTime, SecondsFormat, Utc}; pub fn serialize(date: &DateTime, serializer: S) -> Result where S: Serializer, { serializer.serialize_str(&date.to_rfc3339_opts(SecondsFormat::Millis, true)) } pub fn deserialize<'de, D>(deserializer: D) -> Result, D::Error> where D: Deserializer<'de>, { let s = String::deserialize(deserializer)?; DateTime::parse_from_rfc3339(&s) .map(|d| d.with_timezone(&Utc)) .map_err(serde::de::Error::custom) }