datetime - 为什么在使用请求时解析我的日期成功,但在使用 reqwests 时失败?

标签 datetime encoding rust runtime-error

我有一个包含以下日期的字符串 2015-07-05T11:02:25+00:00

我使用下面的代码来解析它(使用 chrono crate)

    let pub_date = str::replace(entry.pub_date().unwrap(), "-0000", "+0000");
    return DateTime::parse_from_rfc2822(&pub_date)
        .unwrap_or_else(|e| {
            panic!(
                "pub_date for item {:?} (value is {:?}) can't be parsed. {:?}",
                &entry, pub_date, e
            )
        })
        .naive_utc();

当我使用请求箱获取该内容时,日期被正确解析。 但是当我使用 reqwests crate 时,它​​失败并显示错误消息

[2019-09-07 10:48:45.472951 +02:00] INFO [rrss2imap::feed] src\feed.rs:152: There should be new entries, parsing HTML content
thread 'main' panicked at 'pub_date for item Item { title: Some("[Avis/BD] Capitaine Trèfle"), link: Some("https://fr.rec.arts.fantasy.narkive.com/Z2rKs6RJ/avis-bd-capitaine-trefle"), description: None, author: None, categories: [], comments: None, enclosure: None,
guid: None, pub_date: Some("2015-07-05T11:02:25+00:00"), source: None, content: None, extensions: {}, itunes_ext: None, dublin_core_ext: None } (value is "2015-07-05T11:02:25+00:00") can't be parsed. ParseError(Invalid)', src\feed.rs:236:17

如果我调试(使用 VSCode Rust 调试器),错误值只包含 Invalid (3 '\x3')。但我不明白它来自哪里......(我想这可能是某种编码问题,但它让我感到困惑,因为整个对象似乎完全正确)。

而且我不明白出了什么问题。有人知道吗?

最佳答案

事实证明,答案是一个简单的 RFC2282 不合规:源正在发送 2015-07-05T11:02:25+00:00。正如 RFC 所述,时区信息没有 : 这种格式。

关于datetime - 为什么在使用请求时解析我的日期成功,但在使用 reqwests 时失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57832200/

相关文章:

ruby - URI.unescape 在尝试将 "%C3%9Fą"转换为 "ßą"时崩溃

struct - 我如何声明我想要一个包含对实现特征的东西的引用的结构?

c# - 将相对日期时间字符串转换为 DateTime 对象

python - 将 pandas.Series 中的时间戳转换为 datetime.datetime

algorithm - 结合 semacodes 和隐写术?

java - 如何使用 slf4j 以其他语言(例如日语)记录文本

string - 在 Rust 中,有没有办法使用 Windows 约定在 r## #"..."### 中创建文字换行符?

rust 和 vec 迭代器 - 如何过滤

javascript - HighStock 图表中纪元日期时间未正确显示

java - 为什么日期比较失败?