2015-12-09 3 views
2

Я форматирую DateTime для использования в XML и использую форматировщик ISO 8601 «o». Я заметил, что это дает результаты, такие как:Форматирование Millisecond в .Net DateTime

2015-10-21T05:06:25.3800000-05:00 

Похожие выход из другого программного обеспечения, кажется, включает только 3 места для части миллисекунды, например, это:

2015-10-21T05:06:25.380-05:00 

Помимо занимая немного больше места в файле, есть ли проблема с наличием лишних нулей? Есть ли какой-то вариант для форматирования с более короткой версией в .Net без создания пользовательского форматирования? Я предпочитаю использовать опцию формата «o», так что это не проблема, совместима она или нет.

+0

Учитывая, что миллисекунда - это 3 цифры, зачем вам нужно больше? –

+0

@ChuckSavage, я уверен, что OP предпочтет только три, но рассматривает вопрос о том, стоит ли заменять простой спецификатор формата «o» для формата с нуля. – chris

+0

Согласно [Википедии] (https://en.wikipedia.org/wiki/ISO_8601#Times), «Нет предела числу десятичных знаков для десятичной дроби». Поэтому вопрос заключается в том, может ли программное обеспечение, с которым вы общаетесь, понять формат. Если нет, вы должны написать строку пользовательского формата (.NET «o» равно «yyyy» - «MM» - «dd'T'HH»: 'mm': 'ss'. 'FffffffK "') – vesan

ответ

0

Если вы серьезно относитесь к точной дате/времени, рассмотрите возможность использования NodaTime.

Если вы беспокоитесь о пространстве, подумайте о своем собственном форматировании, но простоте текущего метода (который делает то же, что и «o»). Что стоит ваше время, простота программирования (учитывайте следующее) или дисковое пространство?

XElement xdate = new XElement("date", DateTime.Now); 
DateTime dnow = (DateTime)xdate; 

Выходной сигнал, вы увидите, как выглядит «о», а другая (у меня есть -07: 00), так как я нахожусь в другом часовом поясе.

<date>2015-12-09T15:34:02.0177724-07:00</date> 
Смежные вопросы