2016-05-03 4 views
-1

мне нужно иметь следующий формат: аааа-мм-jjThh: мм: sszzzzzzДата Формат времени не Форматирование

И положил его в тип XML свойства «DateTime».

Итак, я сделал это:

var xmlObj= new xmlObj.tHeader(); 
xmlObj.prop = DateTime.ParseExact(DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"), "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'", CultureInfo.InvariantCulture); 

Console.WriteLine(xmlObj.prop); 

Console.WriteLine команда возврата: 03/05/2016 15:43:10

Я не понимаю, почему собственность удалить формат.

В XSD это свойство ожидает формат даты и времени.

Любые идеи?

EDIT:

Ok, на результат команды, я вижу формат по умолчанию, но если преобразовать мой объект XML в файл, формат правильно:

enter image description here

Очень странно ... но теперь все в порядке. Большое спасибо всем вам

+0

Вам нужны речевые знаки или yyyy-MM-ddTHH: mm: ssZ fine? –

+0

yyyy-MM-ddTHH: mm: ssZ is fine – Portekoi

+1

просто любопытно, откуда происходит 'xmlObj.tHeader'? –

ответ

2

Вы звоните DateTime.ParseExact, который анализирует строку в DateTime объекта. Просто отбросьте эту часть и присвойте результат ToString непосредственно xmlObj.prop или напрямую назначьте объект DateTime (если это то, что он ищет).

Edit:

Чтобы решить ваши изменения, файл XML генерируется правильно. Однако, когда вы выводите подсказку DateTime на консоль, она использует формат строки по умолчанию для даты. Вы можете отформатировать это с помощью ToString(), если хотите.

+0

Я не могу: у меня есть ошибка «Невозможно преобразовать строку в datetime» – Portekoi

+0

Если это так, ожидая 'DateTime', полностью пропустите форматирование и сразу назначьте значение даты. –

+1

Что вы делаете в своем коде, так это преобразование в обратном направлении между 'DateTime' и' String', которое не имеет фактического эффекта. –

0

Ваш формат является неправильным в разборе, если вы хотите формат yyyy-MM-ddTHH:mm:ssz то вы должны преобразовать его в виде строки в противном случае, она будет представлять собой стандартный DateTime, попробуйте это

xmlObj.prop = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ"), "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture); 
Console.WriteLine(xmlObj.prop.ToString("yyyy-MM-ddTHH:mm:ssz")); 
+0

Я попробовал ваше предложение, но без эффекта – Portekoi

+0

, если 'xmlObj.prop' - тип datetime, тогда вы должны набросить его на строку типа желания, иначе она будет всегда печатать дату-время как формат вашей системы datetime. – Mostafiz

+0

. Я сделал редактирование моего вопроса. Командная строка форматирует дату, я думаю – Portekoi

1

Вы попробуете это :

Console.WriteLine(DateTime.UtcNow.ToString("s") + "Z"); 
+0

Это нормально, но если я попытаюсь поместить его в «prop», у меня есть ошибка «Невозможно преобразовать строку в DateTime» – Portekoi

Смежные вопросы