如何以符合标准的方式在.NET中序列化DateTime对象
我的目标是使用.NET DateTime对象(使用C#),并以符合标准的方式将其序列化为字符串(用于XML)并进行语法分析。 我想到的具体标准是代表日期和时间的ISO 8601标准。
我想要一个易于使用的解决方案(最好是每种方法调用一个方法),它将转换为格式的连接版本并从中转换。 我也想保留本地时区信息。
下面是我想要得到的那种字符串的例子:
2009-04-15T10:55:03.0174-05:00
我的目标.NET版本是3.5。
几年前,我发现了一个解决这个问题的方法,它涉及一个自定义格式和DateTime.ToString(string)方法。 我很惊讶,一个更简单的标准兼容解决方案不存在。 使用自定义的格式字符串以符合标准的方式进行序列化和解析,这对我来说是一种嗅觉。
幸运的是,有XmlConvert.ToString()
和XmlConvert.ToDateTime()
处理这种格式:
string s = XmlConvert.ToString(DateTime.Now,
XmlDateTimeSerializationMode.Local);
DateTime dt = XmlConvert.ToDateTime(s,
XmlDateTimeSerializationMode.Local);
(选择你合适的序列化模式)
dateobj.ToString(“s”)将为您提供符合ISO 8601的字符串表示形式,然后可以使用DateTime.Parse()进行反序列化
看起来.NET在这方面在过去几年中有所改进。 System.Xml.XmlConvert对象似乎旨在解决在此上下文中出现的全部需求。 以下功能看起来专门设计用于以灵活且符合标准的方式来处理DateTime对象的转换。
XmlConvert.ToDateTime(string, System.Xml.XmlDateTimeSerializationMode)
XmlConvert.ToString(DateTime, System.Xml.XmlDateTimeSerializationMode)
如果您想保留原始时区信息,以下枚举成员看起来特别有用:
System.Xml.XmlDateTimeSerializationMode.RoundtripKind
以下是MSDN上功能文档的链接:
XmlConvert.ToDateTime(字符串,System.Xml.XmlDateTimeSerializationMode)
XmlConvert.ToString(DateTime,System.Xml.XmlDateTimeSerializationMode)
链接地址: http://www.djcxy.com/p/8127.html上一篇: How Do I Serialize DateTime Objects in .NET in a Standards Compliant Way
下一篇: Javascript serialization of DateTime in asp.net is not giving a javascript date object?