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


98

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

Answers:


138

我始终使用ISO 8601格式(例如2008-10-31T15:07:38.6875000-05:00)- date.ToString("o")。它也是XSD日期格式。那是首选的格式和标准日期和时间格式字符串,但是如果您不想在日期和时间之间使用'T',则可以在必要时使用手动格式字符串:date.ToString("yyyy-MM-dd HH:mm:ss");

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


44

编辑:这是一个坏建议。如上所述,使用“ 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


10
请记住,这会将日期转换为UTC。处理日期时,必须根据语言环境将其转换回当前时区(除非您正在处理UTC中的所有内容)。另外,通常您会在末尾加上“ Z”以表示日期为UTC。
瑞安

从soap ui调用.net Web服务时,“ s”对我有用。
特里斯坦·钱宁

4

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


jonnii的返回结果基本相同。
chilltemp

3
在这种情况下,所有日期必须位于UTC时区,否则后缀“ Z”的使用是错误的。
Fr0sT 2013年

我将重复前面的评论-如果dt不是utc,这实际上是不正确的。
布雷迪·莫里兹

3

DTD有什么要说的?

如果XML文件用于与其他现有软件(例如SOAP)进行通信,请检查该软件的预期功能。

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.