С# TimeSpan превышает 23:59:59

Я работаю над небольшим приложением для чтения XML-файла и отображения значения в сетке. Определенные типы отображаемых значений: TimeSpan.

Он работает хорошо, пока «TimeSpan currentTime» ниже не превышает 23:59:59. Например, если данные XML description.Attributes.GetNamedItem("time").Value равны 25:05:00, я получаю TimeSpan, равный 25:00:05:00. Таким образом, не 25 часов и 5 минут, А 25 дней и 5 минут!

Кто-нибудь может мне помочь?

TimeSpan currentTime;
if (!TimeSpan.TryParse(description.Attributes.GetNamedItem("time").Value, out currentTime))
{
    // alert parse is not good
    return;
}

person user3651683    schedule 19.05.2014    source источник
comment
1) Произойдет ли то же самое, если вы вызовете трехаргументную форму TryParse() и укажете CultureInfo.InvariantCulture во втором аргументе? 2) Вы уверены, что ваш XML содержит 25:05:00, а не 25.05:00?   -  person Frédéric Hamidi    schedule 19.05.2014
comment
класс Timepan хранит миллисекунды, секунды, минуты, часы и дни (msdn.microsoft.com/de-de/library/). То, что у вас там есть, похоже на проблему синтаксического анализа. Можете ли вы опубликовать строку (/ пример строки), которую вы там анализируете?   -  person Mark    schedule 19.05.2014


Ответы (1)


Это связано с тем, что класс интерпретирует указанный вами временной интервал как неправильный в течение определенного периода времени (и, таким образом, он возвращается к дням, а не к часам).

Он должен быть в таком формате 25 часов:

1:01:05:00

Или это (что предпочтительнее):

1.01:05:00
person Patrick Hofman    schedule 19.05.2014
comment
Вы имеете в виду 1.01:05:00 ? (точка вместо двоеточия) - person joe; 19.05.2014