XML文件中用于日期/时间的正确格式是什么

时间:2008-10-31 19:58:35

标签: .net xml datetime

使用.NET写入XML文件时,我使用什么格式的日期/时间?我只是使用DateTime.ToString(),还是必须使用特定格式?

5 个答案:

答案 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)

编辑:这是一个糟糕的建议。使用“o”,如上所述。 “s”是错误的东西

我总是使用这个:

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