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

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

我总是使用ISO 8601格式(例如2008-10-31T15:07:38.6875000-05:00 ) – date.ToString("o") 。 这也是XSDdate格式 。 这是首选的格式和一个标准date和时间格式string ,但如果您不想在date和时间之间使用'T',则可以使用手动格式string: date.ToString("yyyy-MM-dd HH:mm:ss");

编辑:如果您使用从XSD或Web服务生成的类,您可以直接将DateTime实例直接分配给类属性。 如果你正在编写XML文本,那么使用上面的。

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

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

DTD有什么要说的?

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

如果XML文件用于序列化或与不存在的软件(例如,您正在编写的软件)通信,则可以定义它。 在这种情况下,我会build议一些在您select的语言中很容易parsing的东西,并且易于人类阅读。 例如,如果您的语言(无论是VB.NET还是C#.NET或其他)可以轻松地parsingISOdate(YYYY-MM-DD),那么我build议这样做。

XmlConvert类提供了这些types的设施。 关于DateTimes,尤其要注意过时的方法。 另见: https : //stackoverflow.com/a/7457718/1288109