减去TimeSpan大于24H

时间:2014-11-05 16:42:15

标签: c# winforms visual-studio timespan

我需要比较两个超过24小时的TimeSpan值。 为此,我使用以下代码

string startTime = textBox1.Text;
string endTime = textBox21.Text;
TimeSpan startTimet = new TimeSpan(int.Parse(startTime.Split(':')[0]),    // hours
                      int.Parse(startTime.Split(':')[1]),    // minutes
                      0);
TimeSpan endTimet = new TimeSpan(int.Parse(endTime.Split(':')[0]),    // hours
                    int.Parse(endTime.Split(':')[1]),    // minutes
                    0);
TimeSpan duration = endTimet.Subtract(startTimet);
label29.Text = duration.ToString();

如果值不大于24H,那就没关系,但如果我的值大于24h,TimeSpan将显示为DD.HH.MM.SS。

例如:

  

endTimet = 32:15

     

startTimet = 02:00

     

持续时间= 1.06:15:00

我真正需要的是像HH:MM这样的正常格式,假设小时数大于24,得到预期的 30:15

有人可以帮我吗? 此致

2 个答案:

答案 0 :(得分:2)

也许有这种解决方法:

TimeSpan duration = TimeSpan.FromHours(30);
string result = string.Format("{0}:{1}"
    , duration.TotalHours
    , duration.Minutes);  // 30:00

答案 1 :(得分:1)

Noda Time救援!

string s1 = "123:45";
string s2 = "234:56";

DurationPattern p = DurationPattern.CreateWithInvariantCulture("H:mm");
Duration d1 = p.Parse(s1).Value;
Duration d2 = p.Parse(s2).Value;

Duration diff = d2 - d1;

string result = p.Format(diff);  // "111:11"