C# DateTime计算和ToString

发布于 2024-11-09 08:12:45 字数 278 浏览 0 评论 0原文

我对时间进行简单的计算,看看进程已经运行了多长时间。

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

其中 StrtTime 是:DateTime StrtTime = DateTime.Now; 。但我遇到了一个例外:

Input string was not in a correct format.

执行此操作的正确方法是什么?

Im doing simple calculation with 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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

流年里的时光 2024-11-16 08:12:45

一个 DateTime 减去另一个的结果是一个 TimeSpan 值,而不是另一个 DateTimeTimeSpan 不支持您给定的格式字符串。

对于标准 TimeSpan 格式字符串,请参阅此处 ,以及此处了解自定义格式。

但是,要测量处理时间,您应该使用更适合该任务的工具,System.Diagnostics.Stopwatch

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

DoSomeProcess();

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

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;
卖梦商人 2024-11-16 08:12:45

正如其他人提到的,您可能想要使用 StopWatch。但是,在您的特定情况下,您会收到错误,因为在 TimeSpan.ToString 中使用格式化字符串时需要转义“:”。试试这个:

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

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")
糖粟与秋泊 2024-11-16 08:12:45

尝试使用

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

Try using

Stopwatch stpWatch1 = new Stopwatch();
            stpWatch1.Start();
            .............
            stpWatch1.Stop();
TimeSpan ts = stpWatch1.Elapsed;// it also contains stpWatch1.ElapsedMilliseconds
暖阳 2024-11-16 08:12:45

正如安东尼提到的,秒表更适合这项任务。要回答您的问题,您可以像这样设置日期格式:

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

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());
独闯女儿国 2024-11-16 08:12:45

使用秒表类。

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

        //code

        sw.Stop();

        sw.Elapsed.ToString();

Use Stopwatch class.

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

        //code

        sw.Stop();

        sw.Elapsed.ToString();
帅哥哥的热头脑 2024-11-16 08:12:45

正如安东尼所说,减法结果是一个TimeSpan

TimeSpan 接受不同的格式:

TimeSpan.ToString 方法(字符串)

As Anthony said, the subtraction results in a TimeSpan.

TimeSpan accepts a different format:

TimeSpan.ToString Method (String)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文