C# 时间跨度加减法
我需要添加从如下格式的文本框中获取的2个时间跨度:mm:ss.fff 例如:C# 时间跨度加减法,c#,addition,timespan,C#,Addition,Timespan,我需要添加从如下格式的文本框中获取的2个时间跨度:mm:ss.fff 例如: 00:59800+00:02300- 结果应该是01:02.100,但我的结果是01:02060 我想我的转换有以下问题: string Sum1 = "00:" + "00:59,800"; Sum1 = Sum1.Replace(',', '.'); double FSum1 = TimeSpan.Parse(Sum1).TotalSeconds; string Sum2 = "00:" + "00:02,300
00:59800
+00:02300
-
结果应该是01:02.100
,但我的结果是01:02060
我想我的转换有以下问题:
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");
同样,我也需要做同样的减法
谢谢您的帮助。您正在寻找
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
你的许多转换是不必要的。试试这个:
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();
}
这是我的解决办法
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");
谢谢您不需要转换为double来求和值 字符串Sum1=“00:”+“00:59800”; 字符串Sum2=“00:”+“00:02300” TimeSpan-sumResult=TimeSpan.Parse(Sum1)+TimeSpan.Parse(Sum2)
maskedTextBoxSumResult.Text=sumResult.ToString(@“hh:mm:ss.fff”) 不要修改字符串以使其进行分析。请使用正确的文化信息:
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();
为什么转换成双倍?直接加上两个时间跨度…你得到我的支持票。其他答案所带来的所有字符串操作都让我的眼睛流血。为什么这里需要
\
呢?Ehsan Sajjad:``正在逃逸:只需跳过:
,,
,最后,
独立于区域性…但您正在修改字符串,就在前两行。首先,字符串Sum1=“00:”+“00:59800”
将编译它,就好像它是由字符串Sum1=“00:00:59800”
编写的一样。此外,我假设该部分只是按照他必须使用的初始条件进行设置。我假设他的代码实际上是从下一行开始的,在那里他修改了刚刚定义的字符串。