开发者

C# DateTime calculation and ToString

Im doing simple calculation w开发者_开发问答ith time, to see how long the process has been running.

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

Where StrtTime is:DateTime StrtTime = DateTime.Now; . But im getting an exception:

Input string was not in a correct format.

Whats the proper way to do this?


One DateTime subtracting another results in a TimeSpan value, not another DateTime. The TimeSpan does not support your given format string.

For standard TimeSpan format strings, see here, and here for custom formats.

However, to measure the process time, you should instead use a tool better equipped for the task, System.Diagnostics.Stopwatch.

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

DoSomeProcess();

watch.Stop();
TimeSpan processTime = watch.Elapsed;


As others have mentioned you may want to use StopWatch. However in your particular case you are getting an error because you need to escape ":" when using a formatting string with TimeSpan.ToString. Try this:

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


Try using

Stopwatch stpWatch1 = new Stopwatch();
            stpWatch1.Start();
            .............
            stpWatch1.Stop();
TimeSpan ts = stpWatch1.Elapsed;// it also contains stpWatch1.ElapsedMilliseconds


As Anthony mentioned, Stopwatch would be better suited for this task. To answer your question though, you can format the Date like this:

String.Format("{0:hh:mm:ss}", (DateTime.Now - StrtTime).ToString());


Use Stopwatch class.

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

        //code

        sw.Stop();

        sw.Elapsed.ToString();


As Anthony said, the subtraction results in a TimeSpan.

TimeSpan accepts a different format:

TimeSpan.ToString Method (String)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜