我正在使用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)
这是什么意思?什么不够?我应该使用其他库吗?
答案 0 :(得分:6)
实施Error::description
的类型通过Display
或Err(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();