使用.NET写入XML文件时,我使用什么格式的日期/时间?我只是使用DateTime.ToString()
,还是必须使用特定格式?
答案 0 :(得分:130)
我始终使用ISO 8601格式(例如2008-10-31T15:07:38.6875000-05:00
) - date.ToString("o")
。这也是XSD date format。这是首选格式和Standard Date and Time Format string,但如果您不希望日期和时间之间的“T”,则可以使用手动格式字符串:date.ToString("yyyy-MM-dd HH:mm:ss");
编辑:如果您正在使用XSD或Web服务中生成的类,则可以直接将DateTime实例分配给类属性。如果您正在编写XML文本,请使用上面的内容。
答案 1 :(得分:41)
我总是使用这个:
dateTime.ToUniversalTime().ToString("s");
如果您的架构如下所示,这是正确的:
<xs:element name="startdate" type="xs:dateTime"/>
哪会导致:
<startdate>2002-05-30T09:00:00</startdate>
您可以在此处获取更多信息:http://www.w3schools.com/xml/schema_dtypes_date.asp
答案 2 :(得分:4)
如果您手动汇编XML字符串,请使用var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ"));
这将输出官方XML日期时间格式。但是如果使用内置的序列化方法,则不必担心格式化。
答案 3 :(得分:3)
DTD有什么要说的?
如果XML文件用于与其他现有软件(例如SOAP)通信,则检查该软件是否符合预期。
如果XML文件用于序列化或与不存在的软件(例如,您正在编写的软件)进行通信,则可以对其进行定义。在这种情况下,我会建议一些既可以用你选择的语言轻松解析的东西,也很容易为人类阅读。例如,如果您的语言(无论是VB.NET还是C#.NET或其他)允许您轻松解析ISO日期(YYYY-MM-DD),那就是我建议的那个。
答案 4 :(得分:0)
XmlConvert
类提供这些类型的设施。
关于DateTimes,特别要注意过时的方法。
另见:https://stackoverflow.com/a/7457718/1288109