Member 13054945 Ответов: 2

{"Строка не была распознана как допустимый временной интервал."}


Я пытаюсь разобрать строку на timespan, но получаю ошибку {"Строка не была распознана как допустимый временной интервал."}
Мой код таков:
общественного строка timeconvert(строка благодати, строку время)
{
строки общее время работы;
TimeSpan t1 = TimeSpan. Parse (difftime); / / здесь возникает ошибка
//В difftime значение исходит из функции типа 9.30, я думаю, что это y показывает ошибку.

if (string.IsNullOrEmpty (благодать))
благодать = " 0";

Промежуток времени Г1 = промежуток времени.Синтаксический анализ(благодать);
Период общее время работы = Т1 + Г1;
общее время работы = общее время работы.Метод toString();


вернуться общее время работы;
}
// я вызываю эту функцию
пункт.ATT_TOTAL_ATT = timeconvert(конвертировать.Метод toString(пункт.ATT_BIOIN_GRACE), (конвертировать.Метод toString(пункт.ATT_DIFF_TIME)));

Что я уже пробовал:

{"String was not recognized as a valid TimeSpan."}

2 Ответов

Рейтинг:
8

Patrice T

Цитата:
я думаю, что это y показывает ошибку.

Перестань думать, убедись! Используйте отладчик для проверки переменных в месте ошибки.

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
17

Jochen Arndt

Это зависит от форматов и единиц измерения, используемых вашими строками.

Поскольку это, по-видимому, значение с плавающей запятой, преобразуйте его в double первый:

double diff = Convert.ToDouble(difftime);
В зависимости от единицы измерения передайте значение в TimeSpan объект (здесь в течение нескольких секунд):
TimeSpan t1 = TimeSpan.FromSeconds(diff);
Похожие на grace ценность.

[РЕДАКТИРОВАТЬ]
Я пропустил, как называется ваша функция.
Изменить функцию, чтобы принять doubles вместо strings и назовите его со значениями:
item.ATT_TOTAL_ATT = timeconvert(item.ATT_BIOIN_GRACE, item.ATT_DIFF_TIME);
Это позволяет избежать ненужных преобразований в string и обратно к double.

Или просто сделайте расчет встроенным:
item.ATT_TOTAL_ATT = TimeSpan.FromSeconds(item.ATT_BIOIN_GRACE + item.ATT_DIFF_TIME).ToString();
[/РЕДАКТИРОВАТЬ]