Який правильний формат слід використовувати для дати / часу у файлі XML


98

Який формат я використовую для дати / часу, коли пишу у XML-файл за допомогою .NET? Чи просто я користуюся DateTime.ToString(), чи я повинен використовувати певний формат?

Відповіді:


138

Я завжди використовую формат 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-текст, то скористайтеся описаним вище.


44

EDIT: Це погана порада. Використовуйте "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


10
Майте на увазі, що дату перетворює на UTC. Обробляючи дату, потрібно перетворити її назад у поточний часовий пояс на основі локальної точки (якщо ви не обробляєте все в UTC). Крім того, зазвичай ви ставите "Z" в кінці, щоб позначити дату - UTC.
Райан

"s" працює для мене під час виклику веб-сервісу .net із soap ui.
Трістан Ченнінг

4

Якщо ви вручну збираєте рядок XML, використовуйте var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ")); Офіційний формат часу XML дати. Але вам не доведеться турбуватися про формат, якщо ви використовуєте вбудовані методи серіалізації.


jonnii's поверне в основному той же результат.
chilltemp

3
У цьому випадку всі дати ОБОВ'ЯЗКОВО перебувають у часовому поясі UTC, інакше використання суфікса "Z" неправильно.
Fr0sT

Повторю попередній коментар - це насправді неправильно, якщо dt не є utc.
Брейді Моріц

3

Що має сказати DTD?

Якщо файл XML призначений для спілкування з іншим існуючим програмним забезпеченням (наприклад, SOAP), перевірте це програмне забезпечення на те, що він очікує.

Якщо файл XML призначений для серіалізації або зв'язку з неіснуючим програмним забезпеченням (наприклад, з тим, що ви пишете), ви можете визначити його. У такому випадку я б запропонував те, що легко розібрати у вибраній вами мові, і легко читати для людей. наприклад, якщо ваша мова (будь то VB.NET чи C # .NET чи будь-яка інша) дозволяє легко проаналізувати дати ISO (РРРР-MM-DD), це я б запропонував.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.