rust-chrono 中的 ParseError(NotEnough) 是什么意思?

What does ParseError(NotEnough) from rust-chrono mean?

我正在使用 rust-chrono 并尝试像这样解析日期:

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)
    }

}

这是输出:

ParseError(NotEnough)

这是什么意思?不够怎么办?我应该使用其他库吗?

你应该使用

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

喜欢:

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)
    }

}

实现 Error 的类型通过 Error::descriptionDisplay:

提供更易于使用的错误消息
Err(e) => println!("{}", e)

这会打印:

input is not enough for unique date and time

估计是因为你没有提供时区,所以时间不明确。

当没有足够的信息来填写整个对象时,将出现 ParseError(NotEnough)。例如缺少日期、时间或时区。

在上面的示例中缺少时区。所以我们可以将它存储在NaiveDateTime中。此对象不存储时区:

let naive_datetime = NaiveDateTime::parse_from_str(date_str, "%Y-%m-%d %H:%M:%S").unwrap();

更多信息: