You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust使用quick_xml序列化OffsetDateTime时出现+00前缀问题求助

序列化OffsetDateTime时出现多余"+00"前缀问题

我完全搞不懂为什么结构体中的OffsetDateTime序列化后会被添加"+00"前缀。

以下是最小复现代码:

/*
[dependencies]
quick-xml = { version = "0.29.0", features= [ "serialize" ] }
serde = { version = "1.0.147", features = [ "derive" ] }
time = { version = "0.3.17", features = [ "serde", "parsing", "formatting" ] }
*/

use serde::{Serialize};
use time::OffsetDateTime;
use quick_xml::se::Serializer;
use time::format_description::well_known::iso8601::Iso8601;

#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Wrapper {
    #[serde(with = "time::serde::iso8601")]
    pub time: OffsetDateTime,
}

fn main() {
    let mut buf = String::new();
    let ser = Serializer::with_root(&mut buf, Some("FooBar")).unwrap();
    let ts = Wrapper { 
        time: OffsetDateTime::parse("2010-01-01T00:00:00Z", &Iso8601::DEFAULT).unwrap(), 
    };
    ts.serialize(ser).unwrap();

    println!("{}", buf);
}

我的结构体注解如下:

#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Wrapper {
    #[serde(with = "time::serde::iso8601")]
    pub time: OffsetDateTime,
}

但最终得到的结果字符串是:

+002010-01-01T00:00:00.000000000Z

这会不会是quick_xml的bug?我已经开始排查quick_xml的代码,但希望有遇到过该问题的人能提供帮助。

内容的提问来源于stack exchange,提问作者clo_jur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:30:24