[英]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.