我随着时间进行简单的计算,看看过程运行了多长时间。
(DateTime.Now - StrtTime).ToString("hh:mm:ss")
StrtTime是:DateTime StrtTime = DateTime.Now;
。但我得到一个例外:
Input string was not in a correct format.
这样做的正确方法是什么?
答案 0 :(得分:9)
一个DateTime
减去另一个会产生TimeSpan
值,而不是另一个DateTime
。 TimeSpan
不支持您给定的格式字符串。
对于标准TimeSpan
格式字符串,see here和here用于自定义格式。
但是,要衡量处理时间,应该使用更适合任务的工具System.Diagnostics.Stopwatch
。
Stopwatch watch = new Stopwatch();
watch.Start();
DoSomeProcess();
watch.Stop();
TimeSpan processTime = watch.Elapsed;
答案 1 :(得分:2)
正如其他人所说,您可能想要使用StopWatch
。但是在您的特定情况下,您会收到错误,因为在使用带有TimeSpan.ToString
的格式化字符串时需要转义“:”。试试这个:
(DateTime.Now - StrtTime).ToString(@"hh\:mm\:ss")
答案 2 :(得分:1)
尝试使用
Stopwatch stpWatch1 = new Stopwatch();
stpWatch1.Start();
.............
stpWatch1.Stop();
TimeSpan ts = stpWatch1.Elapsed;// it also contains stpWatch1.ElapsedMilliseconds
答案 3 :(得分:1)
正如安东尼所说,秒表更适合这项任务。要回答你的问题,你可以像这样格式化日期:
String.Format("{0:hh:mm:ss}", (DateTime.Now - StrtTime).ToString());
答案 4 :(得分:0)
使用秒表课程。
Stopwatch sw = new Stopwatch();
sw.Start();
//code
sw.Stop();
sw.Elapsed.ToString();
答案 5 :(得分:0)