为XML生成日期时间格式

22

我正在尝试生成 cXML 时间戳,格式如下。在 C# 中是否有可以使用的函数来格式化日期时间为:2011-06-09T16:37:17+16:37

例如:

<cXML payloadID="accountsuser@bla.com"
timestamp="2011-06-09T16:37:17+16:37">

4
“+16:37”这部分的作用是什么?在ISO 8601中,它被用作时区,但似乎在这里不是这种情况。 - svick
4个回答

41
使用"o"格式说明符 - 在MSDN上的标准日期和时间格式字符串文档中了解此说明符。
此说明符的模式反映了已定义的标准(ISO 8601)。
6/15/2009 1:45:30 PM -> 2009-06-15T13:45:30.0900000
string formatted = DateTime.Now.ToString("o");

如果这不是你想要的,你需要使用一个自定义格式字符串 - 我认为你需要这样做,因为偏移量不是标准的。

string formatted = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssK");

请注意这个问题的第二个答案。使用“o”,你需要“处理”UTC,对于本地应用程序来说很多时候是不必要的。“s”对我来说就足够了! - JERKER

7
是的,可以使用DateTime.ToString("s"),请参考此链接:标准日期和时间格式字符串。需要注意的是,"s"不包含时区信息,而"o"则同时包含了秒数和时区信息。
您也可以使用XmlConvert.ToString方法,在其中可以指定时区信息。

0
以下是模式中日期声明的示例:
<xs:element name="start" type="xs:date"/>

你文档中的一个元素可能看起来像这样:

<start>2002-09-24</start>

为了指定时区,您可以在日期后面添加“Z”来输入UTC时间的日期:

<start>2002-09-24Z</start>

或者您可以通过在日期后面添加正数或负数时间来指定与UTC时间的偏移量:

<start>2002-09-24-06:00</start>

或者

<start>2002-09-24+06:00</start>

-1
你可以使用 ToString 方法。
DateTime time = DateTime.Now;              
string format = "MMM ddd d HH:mm yyyy";   // or any format you want  
Console.WriteLine(time.ToString(format));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接