TimeSpan加法和减法

时间:2017-06-13 13:44:46

标签: c# addition timespan

我需要添加2个从文本框中取出的时间范围:mm:ss.fff

例如:
00:59,800 + 00:02,300 - 结果应为01:02.100,但我有01:02,060

我认为我的转化问题如下:

string Sum1 = "00:" + "00:59,800";
Sum1 = Sum1.Replace(',', '.');
double FSum1 = TimeSpan.Parse(Sum1).TotalSeconds;

string Sum2 = "00:" + "00:02,300";
Sum2 = Sum2.Replace(',', '.');
double FSum2 = TimeSpan.Parse(Sum2).TotalSeconds;

double SumResult = FSum1 + FSum2;

maskedTextBoxSumResult.Text = TimeSpan.FromMinutes(SumResult).ToString(@"hh\:mm\:ss\.fff");

另外,我需要对减法做同样的事情。

感谢您的帮助。

5 个答案:

答案 0 :(得分:9)

您在寻找TimeSpan.ParseExact吗?

  string left = "00:59,800";
  string right = "00:02,300";

  var result = TimeSpan.ParseExact(left, @"mm\:ss\,fff", CultureInfo.InvariantCulture) +
               TimeSpan.ParseExact(right, @"mm\:ss\,fff", CultureInfo.InvariantCulture);

  Console.Write(result.ToString(@"mm\:ss\.fff"));

结果:

  01:02.100

答案 1 :(得分:0)

这是我的解决方案

TimeSpan t1 = TimeSpan.Parse(maskedTextBoxSum1.Text);
TimeSpan t2 = TimeSpan.Parse(maskedTextBoxSum2.Text);
TimeSpan t3 = t1.Add(t2);
maskedTextBoxSumResult.Text = t3.ToString(@"hh\:mm\:ss\.fff");

由于

答案 2 :(得分:0)

不要修改字符串以使其解析。请改用正确的文化信息:

string Sum1 = "00:" + "00:59,800";
string Sum2 = "00:" + "00:02,300";

var frfr = new System.Globalization.CultureInfo("fr-FR");

var FSum1 = TimeSpan.Parse(Sum1, frfr);
var FSum2 = TimeSpan.Parse(Sum2, frfr);;

var SumResult = FSum1 + FSum2;
SumResult.ToString(@"hh\:mm\:ss\.fff").Dump();

答案 3 :(得分:-1)

您不需要转换为double来对值进行求和。

字符串Sum1 =“00:”+“00:59,800”;  string Sum2 =“00:”+“00:02,300”;

TimeSpan sumResult = TimeSpan.Parse(Sum1)+ TimeSpan.Parse(Sum2);

maskedTextBoxSumResult.Text = sumResult.ToString(@“hh:mm:ss.fff”);

答案 4 :(得分:-2)

您的许多转化都是不必要的。试试这个:

    static  void Main()
    {
        string Sum1 = "00:" + "00:59,800";
        Sum1 = Sum1.Replace(',', '.');
        var FSum1 = TimeSpan.Parse(Sum1);

        string Sum2 = "00:" + "00:02,300";
        Sum2 = Sum2.Replace(',', '.');
        var FSum2 = TimeSpan.Parse(Sum2);

        var SumResult = FSum1 + FSum2;

        var bo  =  SumResult.ToString(@"hh\:mm\:ss\.fff");
        Console.WriteLine(bo);

        Console.ReadLine();
    }