您可以指定日期时间的 XmlSerialization 格式吗?

Posted

技术标签:

【中文标题】您可以指定日期时间的 XmlSerialization 格式吗?【英文标题】:Can you specify format for XmlSerialization of a datetime? 【发布时间】:2010-11-10 06:27:36 【问题描述】:

我需要将日期时间序列化/反序列化为 XML 文件的 yyyyMMdd 格式。我可以为此使用属性/解决方法吗?

【问题讨论】:

你可以操作变量的getter和setter。例如,我有一个枚举 SexUnknown, Female, Male 并且我有一个字符串设置器,它将 m 格式化为男性,将 f 格式化为女性。 xml 序列化程序还写了完整枚举名称的 f 和 m inseatd。工作正常,但几乎没有实际用途。 【参考方案1】:

不,没有。如果它是那种格式,那么就 XML Schema 而言,它不是一个有效的 dateTime。

你能做的最好的如下:

[XmlIgnore]
public DateTime DoNotSerialize get;set;

public string ProxyDateTime 
    get return DoNotSerialize.ToString("yyyyMMdd");
    set DoNotSerialize = DateTime.Parse(value);

【讨论】:

值得注意的是:get/set 都必须存在。我花了半个小时调试为什么我的财产没有被序列化。事实证明我没有‘设定’,因为我对自己说,‘我永远不会改变这个值;为什么要写一套?' @spamguy:XmlSerializer 仅处理具有公共获取和公共设置的公共属性。【参考方案2】:

XmlElementAttribute#DataType 应该提供您所需要的:

[XmlElement(DataType="date")]    
public DateTime Date1 get;set;

这将使 Date1 属性序列化为正确的xml date 格式。

【讨论】:

不,问题是我需要将它序列化为非标准的 xml 日期格式。公认的解决方案是我所追求的。 这对我不起作用,会产生构建错误。 [XmlElement(DataType="date")] 有效。 谢谢。解决了我的问题。我试图删除 Time 组件。干杯! 如果你需要 YYYY-MM-DD,我真的需要 DD/MM/YYYY,Doh!

以上是关于您可以指定日期时间的 XmlSerialization 格式吗?的主要内容,如果未能解决你的问题,请参考以下文章

WPF DatePicker 是不是允许您指定时区?

LinqToTwitter 列出指定日期以来的 DM

iTunesConnect - 应用程序更新:设置未来的可用日期

无法将特定的日期时间字符串转换为日期

将指定的时间格式转换为日期 asp.net

如何在 PayPal 订阅按钮上设置开始日期