如何以符合标准的方式在.NET中序列化DateTime对象

Way*_*inn 7 .net datetime standards-compliance

我的目标是使用.NET DateTime对象(在C#中),并以符合标准的方式将其序列化并从字符串(用于XML)中解析.我想到的具体标准是用于表示日期和时间的ISO 8601标准.

我想要一个易于使用的解决方案(最好是每种方式调用一种方法),它将转换为格式的连接版本.我还想保留当地时区信息.

这是我想要获得的字符串类型的示例:

2009-04-15T10:55:03.0174-05:00

我的目标.NET版本是3.5.

几年前我实际上找到了解决这个问题的方法,它涉及自定义格式和DateTime.ToString(string)方法.我很惊讶没有一个更简单的符合标准的解决方案.使用自定义格式字符串以符合标准的方式进行序列化和解析,这对我来说有点香味.

Mar*_*ell 15

幸运的是,有XmlConvert.ToString()XmlConvert.ToDateTime()处理这种格式:

string s = XmlConvert.ToString(DateTime.Now,
     XmlDateTimeSerializationMode.Local);
DateTime dt = XmlConvert.ToDateTime(s,
     XmlDateTimeSerializationMode.Local);
Run Code Online (Sandbox Code Playgroud)

(选择适当的序列化模式)


jle*_*lew 5

dateobj.ToString("s")将为您提供符合 ISO 8601 标准的字符串表示形式,然后可以使用以下命令对其进行反序列化DateTime.Parse()