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

时间:2016-05-24 15:55:32

标签: rust rust-chrono

我正在使用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)

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

3 个答案:

答案 0 :(得分:6)

实施Error::description的类型通过DisplayErr(e) => println!("{}", e) 提供了更加用户友好的错误消息:

protected abstract PutFlowFile createPut(final ProcessSession session, final ProcessContext context, final FlowFile flowFile);

打印:

  

输入不足以获得唯一的日期和时间

大概这是因为你没有提供时区,因此时间不明确。

答案 1 :(得分:3)

你应该使用

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

}

答案 2 :(得分:1)

当没有足够的信息填充整个对象时,将显示ParseError(NotEnough)。例如缺少日期,时间或时区。

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

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

有关更多信息:https://stackoverflow.com/a/61179071/2037998