10

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

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

4

3 回答 3

9

实现的类型通过orError有更多用户友好的错误消息:Error::descriptionDisplay

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

这打印:

输入对于唯一的日期和时间是不够的

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

于 2016-05-24T16:16:28.843 回答
5

你应该使用

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

}
于 2016-05-24T16:15:08.890 回答
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

于 2020-04-12T22:36:06.127 回答