chrono::format::strftime doesn't work with UNIX timestamp

142 Views Asked by At
use chrono::format::{parse, Item, Parsed};

static SUPPORTED_DATETIME_FORMATS: &[&'static str] = &["%s",];

static ref PARSED_DATETIME_FORMATS : Vec<Vec<Item<'static>>> = SUPPORTED_DATETIME_FORMATS
    .iter()
    .map(|format| StrftimeItems::new(format).collect())
    .collect();
    
fn parse(s: &str) -> Option<i64> {
    for format in PARSED_DATETIME_FORMATS.iter() {
        let mut parsed = Parsed::new();
        let dt = parse(&mut parsed, &s, format.iter().cloned()).and_then(|_| {
            DateTimeParser::apply_default_values(&mut parsed);
            parsed.to_datetime()
        });
        if dt.is_ok() {
            return dt.ok().and_then(|dt| DateTimeParser::extract_ticks(&dt));
        }
    }
    return None;
}

Unix timestamp should be supported according to the docs: https://docs.rs/chrono/0.3.1/chrono/format/strftime/index.html

However: let result = parse("994518299"); // result = None

Anyone knows why?

0

There are 0 best solutions below