c# - 在 C# 中使用 TimeSpans 计算平均时间

标签 c#

我正在尝试通过开始时间减去结束时间然后将差值除以计数来计算平均时间。在我的例子中,计数是扫描的产品。我想使用这种格式“HH:mm:ss”以字符串形式输出结果。我一直在玩我的代码,但我无法让它工作。

这是我的变量:

    private DateTime woStartTime;
    private DateTime woEndTime;
    private TimeSpan difference;
    private long average;

这是开始时间的值

    woStartTime = DateTime.Now;

这是我计算平均时间的方法

 public void Calculate_Average_Time()
    {
        try
        {
            woEndTime = DateTime.Now;
            difference = woEndTime - woStartTime;
            long dTime = Convert.ToInt64(difference.Ticks);
            average = dTime / Scanned;
            DateTime aTimeS = Convert.ToDateTime((average / 86400M).ToString("HH:mm:ss", CultureInfo.InvariantCulture));
            lblError.Text = aTimeS.ToString(); // display to verify results
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

我不断收到异常错误:字符串未被识别为有效的日期时间。有一个从索引 0 开始的未知单词。

我做错了什么?请帮忙。

最佳答案

您根本不应该使用 DateTime。使用 System.Diagnostics.Stopwatch相反,当您想准确测量耗时时。

无论如何,我会根据DateTime 来回答您的问题,希望这对您将来有所帮助:) 您不需要先转换为字符串,然后再转换为DateTime .使用

TimeSpan aTimeS = new TimeSpan(average);

这将创建一个新的 TimeSpan 具有指定的滴答数。注意使用TimeSpan而不是DateTimeTimeSpan代表一个时间量,而DateTime是一个特定的点及时。

关于c# - 在 C# 中使用 TimeSpans 计算平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29262533/

相关文章:

c# - GDI+ 异常将位图保存到 MemoryStream

c# - 机器人遇到错误或错误。要继续运行该机器人,请修复机器人源代码

c# - 使用系统时钟测量广播消息延迟,好主意?

c# - 波斯日历对 CultureInfo 无效

c# - 使用 stringbuilder 的好处

c# - 使用 Specflow.Assist .Dynamic 访问具有特殊字符的属性

javascript - 取消 MVC 表单提交

c# - 用于 Unity3d 5.x 的极简主义 Python 服务器

c# - 如何在领域类中表达领域逻辑?

c# - 是否可以使用 Autodesk.AutoCAD.Interop 在 AutoCAD 中编辑 block 属性?