1

我有两个字符串变量,例如 StartTime 和 EndTime。我需要通过用 StartTime 减去 EndTime 来计算 TotalTime。

StartTime 和 EndTime 的格式如下:

    StartTime = "08:00 AM";
    EndTime = "04:00 PM";

TotalTime(小时和分钟格式)。如何使用 C# 计算这个?

4

4 回答 4

8

将它们转换为DateTime并从另一个中减去一个以获得TimeSpan.

DateTime StartTime = DateTime.Parse("08:00 AM");

DateTime EndTime  = DateTime.Parse("04:00 PM"); // It converts this to 1600.

TimeSpan ts = EndTime - StartTime;

当我运行上面的代码时,它给了我

ts.Days              // 0
ts.Hours             // 8
ts.Milliseconds      // 0
ts.Minutes           // 0
ts.Seconds           // 0
ts.Ticks             // 288000000000
ts.TotalDays         // 0.3333333333333333331
ts.TotalHours        // 8.0
ts.TotalMilliseconds // 28800000.0
ts.TotalMinutes      // 480.0
ts.TotalSeconds      // 28800.0

得到你想要的。

于 2012-05-29T09:27:10.623 回答
6

您应该将字符串转换为DateTime并用于TimeSpan计算差异

DateTime d1 = DateTime.Parse(StartTime);
DateTime d2 = DateTime.Parse(EndTime);
TimeSpan ts = dt.Subtract(dt2);

类似上面的东西。你可能需要ParseExact而不是Parse

对于您的采样时间,ts.ToString()将返回一个字符串"08:00:00",给出小时、分钟和秒的差异

于 2012-05-29T09:27:22.043 回答
3

在将字符串解析为值时,使用该ParseExact方法指定确切的格式DateTime,然后将它们相减以获得一个TimeSpan值:

string StartTime = "08:00 AM";
string EndTime = "04:00 PM";

DateTime start = DateTime.ParseExact(StartTime, "hh:mm tt", CultureInfo.InvariantCulture);
DateTime end = DateTime.ParseExact(EndTime, "hh:mm tt", CultureInfo.InvariantCulture);

TimeSpan diff = end - start;

Console.WriteLine(diff.TotalMinutes);

输出:

480
于 2012-05-29T09:37:27.850 回答
2
string StartTime, EndTime;
StartTime = "08:00 AM"; 
EndTime = "04:00 PM"; 
DateTime startTime = DateTime.Parse(StartTime); 
DateTime endTime = DateTime.Parse(EndTime); 
TimeSpan ts = endTime.Subtract(startTime);

输出:08:00:00 看跌期权是 Hrs:Min:Sec 格式。

这就是你需要的。对

注意: 减法时 endTime 应该在前。

于 2012-05-29T09:34:30.960 回答