Какой формат я использую для даты / времени при записи в файл XML с помощью .NET? Я просто использую DateTime.ToString()
или мне нужно использовать определенный формат?
Ответы:
Я всегда использую формат ISO 8601 (например 2008-10-31T15:07:38.6875000-05:00
) - date.ToString("o")
. Это также формат даты XSD . Это предпочтительный формат и строка стандартного формата даты и времени , хотя при необходимости вы можете использовать строку ручного формата, если вам не нужна буква «T» между датой и временем:date.ToString("yyyy-MM-dd HH:mm:ss");
EDIT: если вы используете сгенерированный класс из XSD или веб-службы, вы можете просто назначить экземпляр DateTime непосредственно свойству класса. Если вы пишете текст XML, используйте указанное выше.
РЕДАКТИРОВАТЬ: Это плохой совет. Используйте "o", как указано выше. "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
Если вы вручную собираете XML-строку, используйте var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ"));
That будет выводить официальный формат даты и времени XML. Но вам не нужно беспокоиться о формате, если вы используете встроенные методы сериализации.
Что говорит DTD?
Если XML-файл предназначен для связи с другим существующим программным обеспечением (например, SOAP), проверьте это программное обеспечение на предмет того, что оно ожидает.
Если файл XML предназначен для сериализации или связи с несуществующим программным обеспечением (например, с тем, которое вы пишете), вы можете определить его. В этом случае я бы предложил что-то, что легко проанализировать на выбранном вами языке (ах) и легко прочитать людям. например, если ваш язык (будь то VB.NET или C # .NET или что-то еще) позволяет легко анализировать даты ISO (YYYY-MM-DD), я бы предложил именно это.
XmlConvert
Класс предоставляет следующие виды объектов. В отношении DateTimes, в частности, будьте осторожны с устаревшими методами. См. Также: https://stackoverflow.com/a/7457718/1288109