2008-10-31 1003 views

回答

119

我总是使用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文本,请使用上述内容。

3

DTD有什么要说的?

如果XML文件用于与其他现有软件(例如SOAP)通信,请检查该软件是否符合要求。

如果XML文件用于序列化或与不存在的软件(例如,您正在编写的软件)进行通信,则可以对其进行定义。在这种情况下,我会建议一些易于解析的选择语言,并易于阅读。例如,如果您的语言(无论是VB.NET还是C#.NET或其他)可以轻松解析ISO日期(YYYY-MM-DD),那就是我所建议的。

38

编辑:这是不好的建议。如上所述使用“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

+8

请记住,这会将日期转换为UTC。处理日期时,必须根据区域设置将其转换回当前时区(除非您正在处理UTC中的所有内容)。另外,通常您会在末尾放置'Z'来表示日期是UTC。 – Ryan 2008-10-31 20:32:11

+0

“s”在从soap ui调用.net Web服务时适用于我。 – 2014-05-15 11:42:33

4

如果您正在手动组装XML字符串,请使用var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ"));这将输出官方的XML Date Time格式。但是如果使用内置的序列化方法,则不必担心格式。