减去大于24H的TimeSpan

本文关键字:TimeSpan 24H 大于 | 更新日期: 2023-09-27 18:29:11

我需要比较两个大于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,那也没关系,但如果我的值大于24小时,TimeSpan将显示为DD.HH.MM.SS.

例如:

endTimet=32:15

startTimet=02:00

持续时间=1.06:15:00

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

有人能帮我吗?问候

减去大于24H的TimeSpan

也许有了这个解决方法:

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

野田是时候救援了!

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"