Как конвертировать ISO8601 TimeSpan в C # TimeSpan?

Я получаю System.FormatException когда пытаюсь сделать следующее (в качестве примера):

 TimeSpan ts = XmlConvert.ToTimeSpan("P72H"); 

Я исследовал стандарт ISO8601, и это кажется правильным, но я не могу заставить его разбирать часы, не бросая исключение, независимо от того, что я делаю.

Благодаря!

РЕДАКТИРОВАТЬ:

Подробности об исключении:

 System.FormatException was unhandled by user code HResult=-2146233033 Message=The string 'P72H' is not a valid TimeSpan value. Source=System.Xml 

Вам нужно добавить разделитель времени в строку. Попробуй это:

 TimeSpan ts = XmlConvert.ToTimeSpan("PT72H"); 

См. Спецификацию продолжительности – http://www.w3.org/TR/xmlschema-2/#duration

3.2.6.1 Лексическое представление
Лексическое представление для длительности – это расширенный формат [ISO 8601] PnYn MnDTnH nMnS, где nY представляет количество лет, nM количество месяцев, nD количество дней, ‘T’ – разделитель даты / времени, nH номер часов, nM – количество минут и nS – количество секунд. Количество секунд может включать десятичные цифры в произвольную точность.

Вы, должно быть, пропустили что-то в стандарте. Следующие:

 System.Xml.XmlConvert.ToString(TimeSpan.FromHours(12)) 

дает мне строку PT12H . Таким образом, кажется, что часть времени должна иметь префикс T И следующие анализы правильно:

 System.Xml.XmlConvert.ToTimeSpan("PT25H") 

(To TimeSpan который строит до 1.01:00:00 )

Пожалуйста, используйте следующий формат для System.Xml.XmlConvert.ToTimeSpan("PnYnMnDTnHnMnS") .

P – Обозначение должно быть размещено до формата даты.

nY – Количество лет, например: 2Y
nM – Число месяцев: 4M
nD – количество дней ex: 6D

T – Обозначение, которое должно быть размещено до формата времени

nH – количество часов: 8H
nM – количество минут: 12M
nS – Количество секунд: 14S

System.Xml.XmlConvert.ToTimeSpan("P2Y4M6DT8H14M18S")

Здесь часть замешательства с Месяцем и Минутами имеет одинаковую букву для обозначения, но использование указателя делает их отдельными, чтобы понять их легко.

Interesting Posts
Давайте будем гением компьютера.