Какой правильный формат использовать для даты / времени в файле XML - PullRequest
93 голосов
/ 31 октября 2008

Какой формат я использую для даты / времени при записи в файл XML с использованием .NET? Я просто использую DateTime.ToString(), или я должен использовать определенный формат?

Ответы [ 5 ]

130 голосов
/ 31 октября 2008

Я всегда использую формат ISO 8601 (например, 2008-10-31T15:07:38.6875000-05:00) - date.ToString("o"). Это также XSD формат даты . Это предпочтительный формат и строка Стандартный формат даты и времени , хотя при необходимости можно использовать строку ручного формата, если вы не хотите использовать букву «Т» между датой и временем: date.ToString("yyyy-MM-dd HH:mm:ss");

РЕДАКТИРОВАТЬ: Если вы используете сгенерированный класс из XSD или веб-службы, вы можете просто назначить экземпляр DateTime непосредственно свойству класса. Если вы пишете XML-текст, используйте приведенное выше.

41 голосов
/ 31 октября 2008

РЕДАКТИРОВАТЬ: Это плохой совет. Используйте «о», как указано выше. «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

4 голосов
/ 31 октября 2008

Если вы вручную собираете строку XML, используйте var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ")); Это выведет официальный формат даты и времени XML. Но вам не нужно беспокоиться о формате, если вы используете встроенные методы сериализации.

3 голосов
/ 31 октября 2008

Что говорит DTD?

Если XML-файл предназначен для связи с другим существующим программным обеспечением (например, SOAP), проверьте это программное обеспечение на предмет ожидаемого.

Если файл XML предназначен для сериализации или связи с несуществующим программным обеспечением (например, тем, которое вы пишете), вы можете определить его. В этом случае я бы предложил что-то, что легко разбирается на выбранном вами языке (языках) и легко читается людьми. например, если ваш язык (будь то VB.NET, C # .NET или любой другой) позволяет легко разбирать даты ISO (ГГГГ-ММ-ДД), я бы предложил этот вариант.

0 голосов
/ 28 августа 2014

Класс XmlConvert предоставляет такие виды услуг. О DateTimes, в частности, будьте осторожны с устаревшими методами. Смотрите также: https://stackoverflow.com/a/7457718/1288109

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...