C # DateTime расчет и ToString - PullRequest
2 голосов
/ 25 мая 2011

Я делаю простой расчет со временем, чтобы увидеть, как долго работает процесс.

(DateTime.Now - StrtTime).ToString("hh:mm:ss")

Где StrtTime: DateTime StrtTime = DateTime.Now;.Но я получаю исключение:

Input string was not in a correct format.

Как правильно это сделать?

Ответы [ 6 ]

9 голосов
/ 25 мая 2011

Один DateTime вычитание другого приводит к значению TimeSpan, а не другому DateTime.TimeSpan не поддерживает заданную строку формата.

Для стандартных строк формата TimeSpan, см. Здесь и здесь для пользовательских форматов.

Однако, чтобы измерить время процесса, вы должны вместо этого использовать инструмент, лучше приспособленный для этой задачи, System.Diagnostics.Stopwatch.

Stopwatch watch = new Stopwatch();
watch.Start();

DoSomeProcess();

watch.Stop();
TimeSpan processTime = watch.Elapsed;
2 голосов
/ 25 мая 2011

Как уже упоминалось, вы можете использовать StopWatch. Однако в вашем конкретном случае вы получаете ошибку, потому что вам нужно экранировать ":" при использовании строки форматирования с TimeSpan.ToString. Попробуйте это:

(DateTime.Now - StrtTime).ToString(@"hh\:mm\:ss")
1 голос
/ 25 мая 2011

Как уже упоминал Энтони, для этой задачи лучше подойдет секундомер. Чтобы ответить на ваш вопрос, вы можете отформатировать дату следующим образом:

String.Format("{0:hh:mm:ss}", (DateTime.Now - StrtTime).ToString());
1 голос
/ 25 мая 2011

Попробуйте использовать

Stopwatch stpWatch1 = new Stopwatch();
            stpWatch1.Start();
            .............
            stpWatch1.Stop();
TimeSpan ts = stpWatch1.Elapsed;// it also contains stpWatch1.ElapsedMilliseconds
0 голосов
/ 25 мая 2011

Как сказал Энтони, в результате вычитания получается TimeSpan.

TimeSpan принимает другой формат:

Метод TimeSpan.ToString (String)

0 голосов
/ 25 мая 2011

Использовать класс секундомера.

        Stopwatch sw = new Stopwatch();
        sw.Start();

        //code

        sw.Stop();

        sw.Elapsed.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...