[英]Rust Chrono date parse from RFC2822 allow time zone string at the end of the string
我正在尝试解析邮件标头。 我正在尝试使用 Chrono 解析日期,方法是给它RFC2822 strings 。 问题是它无法解析格式为2 Nov 2021 14:26:12 +0000 (UTC)
的字符串,问题似乎是最后一部分(UTC)
。 我怎样才能让 Chrono 也解析这些字符串?
use chrono::prelude::DateTime; // 0.4.19
use regex::Regex; // 1.6.0
let date = "2 Nov 2021 14:26:12 +0000"; // does work
let date = "2 Nov 2021 14:26:12 +0000 (UTC)"; // does not work
// regex parses "[+-]dddd (www)" => " "[+-]dddd"
let re = Regex::new(r"([+-]?\d{4}) \(\w+\)$").unwrap();
let date = DateTime::parse_from_rfc2822(
&re.replace(date_rfc2822_str, "$1")
)
.unwrap()
);
我可以使用正则表达式来删除最后一部分,但是否可以在没有这个“hack”的情况下解析它?
它已得到修复,可能会在 chrono 版本0.4.20
中发布。
use chrono::prelude::DateTime; // main branch
fn main() {
let date = "2 Nov 2021 14:26:12 +0000 (UTC)";
println!("{}", DateTime::parse_from_rfc2822(date).unwrap());
}
2021-11-02 14:26:12 +00:00
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.