Expand description

Ser/de to/from optional timestamps in seconds

Intended for use with serde’s with attribute.


use chrono::serde::ts_seconds_option;
#[derive(Deserialize, Serialize)]
struct S {
    #[serde(with = "ts_seconds_option")]
    time: Option<DateTime<Utc>>

let time = Some(Utc.ymd(2015, 5, 15).and_hms(10, 0, 0));
let my_s = S {
    time: time.clone(),

let as_string = serde_json::to_string(&my_s)?;
assert_eq!(as_string, r#"{"time":1431684000}"#);
let my_s: S = serde_json::from_str(&as_string)?;
assert_eq!(my_s.time, time);


  • Deserialize a DateTime from a seconds timestamp or none
  • Serialize a UTC datetime into an integer number of seconds since the epoch or none