What does ParseError(NotEnough) from rust-chrono m

2019-02-18 01:08发布

问题:

I'm using rust-chrono and I'm trying to parse a date like this:

extern crate chrono;

use chrono::*;

fn main() {

    let date_str = "2013-02-14 15:41:07";
    let date = DateTime::parse_from_str(&date_str, "%Y-%m-%d %H:%M:%S");
    match date {
        Ok(v) => println!("{:?}", v),
        Err(e) => println!("{:?}", e)
    }

}

And this is the output:

ParseError(NotEnough)

What does this mean? Not enough of what? Should I be using some other library?

回答1:

You should use

UTC.datetime_from_str(&date_str, "%Y-%m-%d %H:%M:%S");

Like:

extern crate chrono;

use chrono::*;

fn main() {

    let date_str = "2013-02-14 15:41:07";
    let date = UTC.datetime_from_str(&date_str, "%Y-%m-%d %H:%M:%S");
    match date {
        Ok(v) => println!("{:?}", v),
        Err(e) => println!("{:?}", e)
    }

}


回答2:

Types that implement Error have more user-friendly error messages via Error::description or Display:

Err(e) => println!("{}", e)

This prints:

input is not enough for unique date and time

Presumably this is because you haven't provided a timezone, thus the time is ambiguous.