use chrono::{DateTime, NaiveDateTime, Utc}; use serde::{Deserialize, Deserializer}; pub fn naive_read_unixtime<'de, D>(d: D) -> Result, D::Error> where D: Deserializer<'de> { let ts = ::deserialize(d)?; Ok(DateTime::::from_utc( NaiveDateTime::from_timestamp(ts, 0), Utc )) } pub fn option_naive_read_unixtime<'de, D>( d: D ) -> Result>, D::Error> where D: Deserializer<'de> { match ::deserialize(d) { Ok(ts) => Ok(Some(DateTime::::from_utc( NaiveDateTime::from_timestamp(ts, 0), Utc ))), Err(_) => Ok(None) } } pub fn option_naive_read_unixtime_db<'de, D>( d: D ) -> Result>, D::Error> where D: Deserializer<'de> { match ::deserialize(d) { Ok(ts) => Ok(Some(DateTime::::from_utc( NaiveDateTime::from_timestamp(ts / 1000, 0), Utc ))), Err(_) => Ok(None) } }