【发布时间】:2020-01-13 13:44:59
【问题描述】:
我正在编写一些代码来解析 RSS 提要,但我在使用 Abstruse Goose RSS feed 时遇到了问题。
如果您查看该提要,日期编码为Mon, 06 Aug 2018 00:00:00 UTC。对我来说,它看起来像 RFC 2822。
我尝试使用 chrono 的 DateTime::parse_from_rfc2822 解析它,但我得到了 ParseError(NotEnough)。
let pub_date = entry.pub_date().unwrap().to_owned();
return rfc822_sanitizer::parse_from_rfc2822_with_fallback(&pub_date)
.unwrap_or_else(|e| {
panic!(
"pub_date for item {:?} (value is {:?}) can't be parsed due to error {:?}",
&entry, pub_date, e
)
})
.naive_utc();
我做错了什么吗?我必须以某种方式破解它吗?
我使用rfc822_sanitizer,它可以很好地修复错误的书写错误(大部分时间)。我认为它不会影响解析...但谁知道呢?
【问题讨论】:
-
显示一些 Rust 代码,以便其他人可以重现您的问题。
-
Mon, 06 Aug 2018 00:00:00 UTC绝对不是 RFC2822 格式的时间戳。 RFC2822 中指定的in the doc(搜索obs-zone)中UTC 的有效符号是UT,而不是UTC -
@SébastienRenauld 该死的......它会成为 rfc822 sanitizer 扩展的候选者吗?
-
可能。这是人们试图推出自己的日期时间生成器的一个已知问题,tbh。他们看到“GMT”,他们认为这将是“UTC”,而现实是世界时的真实时区是世界时。关于这个名字有很多背景故事
-
无论如何。尝试用“UT”替换“UTC”,再试一次,如果它有效,请告诉我。如果是这样,我会写一个包含所有琐事的答案
标签: date rust rfc2822 rust-chrono