【发布时间】:2021-07-12 13:24:38
【问题描述】:
我想根据带有HH:mm:ss:ff 格式的时间戳的 2 个字符串来计算进程需要执行的经过时间。因此,我将这些字符串拆分,将它们转换为整数并减去它们。
我尝试的是从第一个时间戳中减去最后一个时间戳。它有时也有效。但我也从中得到了很多奇怪的反馈——例如:0:0:-3:-18 我认为这是因为如果一个值高于另一个值并且它们被分割,则不处理该案例的结果。
这是我用来减去字符串的函数:
static string calculateElapsedTime(string startTime, string endTime)
{
try
{
string[] startTimeSplit = startZeit.Split(new char[] { ':', '.' });
string[] endTimeSplit = endZeit.Split(new char[] { ':', '.' });
int[] elapsedTime = new int[4];
endTimeSplit[0] = Convert.ToInt32(endTimeSplit[0]) - Convert.ToInt32(startTimeSplit[0]);
endTimeSplit[1] = Convert.ToInt32(endTimeSplit[1]) - Convert.ToInt32(startTimeSplit[1]);
endTimeSplit[2] = Convert.ToInt32(endTimeSplit[2]) - Convert.ToInt32(startTimeSplit[2]);
endTimeSplit[3] = Convert.ToInt32(endTimeSplit[3]) - Convert.ToInt32(startTimeSplit[3]);
string elapsedTimeString = string.Format("{0}:{1}:{2}:{3}", endTimeSplit[0], endTimeSplit[1], endTimeSplit[2], endTimeSplit[3]);
return elapsedTimeString;
}
catch( Exception ex )
{
Console.WriteLine(ex.Message);
return "null";
}
}
我通过简单地获取时间来获得参数的值:
DateTime.Now.ToString("HH:mm:ss:ff", System.Globalization.DateTimeFormatInfo.InvariantInfo);
解决方案:
在命名空间 System.Diagnostics 中有一个名为 Stopwatch 的函数。
你可以如下使用它:
Stopwatch watch = new Stopwatch();
watch.Start();
//Prozess
watch.Stop();
Console.WriteLine(watch.Elapsed);
【问题讨论】:
-
很高兴知道。好吧,我现在第一次用 C# 处理时间,我认为没关系;)
-
你说的是除法,但也许你的意思是减法?