2014-11-20 3 views
0

Я уверен, что это как-то объяснено здесь раньше, но я не могу получить точный формат, который я хочу. Мне нужно преобразовать объект DateTime в объект C# в xsd: dateTime.От C# datetime до xsd: datetime

Результат должен выглядеть примерно так:

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

см. Http://stackoverflow.com/questions/6314154/generate-datetime-format-for-xml –

ответ

1

Люди обычно используют 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) 

Помните, что "K" custom format specifier генерирует только UTC Offset часть текущего часового пояса, если ваш DateTimeKind является Local. Для Utc он генерирует символ Z, а для Unspecified он генерирует пустую строку.

+0

Проблема с этим решением заключается в том, что он не дает мне результат, который вы указали. Все результаты, которые я мог обнаружить, генерируют часть «fffffffK». – Moutabreath

+0

В конце концов, я использовал вашу идею подстрокой. Просто нужно перестроить его в соответствии с реальным результатом. Благодарю. – Moutabreath

+0

@Moutabreath Вы не можете получить формат, например '.. + 02: 0', если вы используете стандартный формат' O или o'. Вы должны использовать пользовательский формат даты и времени и использовать метод «Подстрока», как я уже упоминал. Я не думаю, что в вашем случае может быть другое решение. –