我正在尝试使用 Chrono 库将字符串转换为日期。我总是收到 BadFormat
或 NotEnough
错误:
extern crate chrono;
use chrono::prelude::*;
fn main() {
let dt1 = DateTime::parse_from_str(
"2017-08-30 18:34:06.638997932 UTC",
"%Y-%m-%d %H:%M:%S.%9f"
);
println!("{:?}", dt1);
}
我不确定我做错了什么。
最佳答案
如评论中所述,您的格式字符串不允许字符串的
"UTC"
部分。这就是您收到BadFormat
错误的原因。如果您将
"UTC"
添加到格式字符串中,您仍然会收到BadFormat
错误,因为您键入了.%9f
当它应该是%.9f
.修复该问题后,您会收到
NotEnough
错误,因为我们实际上并未解析时区。
我会使用 NaiveDateTime
始终以 UTC 格式进行解析,然后将 "UTC"
添加到格式字符串中以忽略它,更正拼写错误:
use chrono::prelude::*; // 0.4.9
fn main() {
let dt1 = NaiveDateTime::parse_from_str(
"2017-08-30 18:34:06.638997932 UTC",
"%Y-%m-%d %H:%M:%S%.9f UTC",
);
println!("{:?}", dt1); // Ok(2017-08-30T18:34:06.638997932)
}
关于datetime - BadFormat 在使用 Chrono 时将字符串解析为最新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45967902/