从c#datetime到xsd:datetime

时间:2014-11-20 14:55:57

标签: c# datetime soap xsd

我确定以前在某处解释过,但我似乎无法获得我想要的确切格式。 我需要将C#中的DateTime对象转换为xsd:dateTime对象。

结果应如下所示:

 2014-11-19T21:59:59+02:0

1 个答案:

答案 0 :(得分:3)

人们通常会使用The "O" or "o" standard format。无论您使用哪种文化,此格式始终生成"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"格式。

但这与您的需求不符。您需要使用custom date and time format

DateTime dt = new DateTime(2014, 11, 19, 21, 59, 59, DateTimeKind.Local);
dt.ToString("yyyy-MM-ddTHH:mm:ssK");

结果将是;

2014-11-19T21:59:59+02:00

然后,您可以使用String.Substring overload删除您的上一个字符,如;

.Substring(0, dt.ToString("yyyy-MM-ddTHH:mm:ssK").Length - 1)

请注意,如果DateTimeKindLocal,则此"K" custom format specifier仅生成当前时区的UTC Offset部分。对于Utc,它会生成Z个字符,对于Unspecified,它会生成空字符串。