如何从串联值中找到总数?

How to find total from a concatenated value?

我有两个串联的值,例如

string BreakOut = "10:15 Mintes";
string BreakIn = "10:30 Minutes"; 

我想要的结果是

Total=15 Minutes

是时差计算。但是值不是时间格式,而是字符串格式。我怎样才能做到这一点。请提出一个方法。我试过

 TimeSpan span=Convert.ToDateTime(BreakOut ).Subtract(Convert.ToDateTime(BreakIn ));

如果您的值始终指的是同一天, 你可以使用类似的东西:

string BreakOut="10:15" ;
string BreakIn ="10:30"; 
double res =DiffInMinutes(BreakIn, BreakOut);
//Total=15 Minutes


        public static double DiffInMinutes(string _BreakIn, string _BreakOut)
        {
            double diff = 0;
            string[] BreakIn = _BreakIn.Split(':');
            string[] BreakOut = _BreakOut.Split(':');
            //timeSpan instanciated with Hours/minutes/seconds
            TimeSpan TimeElapsed = new TimeSpan(int.Parse(BreakOut[0]) - int.Parse(BreakIn[0]), int.Parse(BreakOut[1]) - int.Parse(BreakIn[1]), 0);

            diff = TimeElapsed.TotalMinutes;
            return diff;
        }

我否决了你的问题,但也许你真的不知道有 TimeSpan.Parse

string breakOut = "10:15 Minutes";
string breakIn = "10:30 Minutes";
string cleanBreakIn = breakIn.Split(' ')[0];
string cleanBreakOut = breakOut.Split(' ')[0];
TimeSpan total = TimeSpan.Parse(cleanBreakIn) - TimeSpan.Parse(cleanBreakOut);

没有必要将它们解析为DateTime,因为它们是时间间隔TimeSpan 会是更好的选择,因为这正是它的用途。

如果 Mintes 是拼写错误并且您的值 总是 相同的标准格式,您可以轻松地用白色 space 拆分它们,然后解析为 TimeSpan.

例如;

var BreakOut= "10:15 Minutes";
var BreakIn = "10:30 Minutes";

BreakOut = BreakOut.Split(new string[]{" "},
                          StringSplitOptions.RemoveEmptyEntries)[0];
BreakIn = BreakIn.Split(new string[] { " " },
                        StringSplitOptions.RemoveEmptyEntries)[0];

var ts1 = TimeSpan.Parse(BreakOut, CultureInfo.InvariantCulture);
var ts2 = TimeSpan.Parse(BreakIn, CultureInfo.InvariantCulture);

var difference = ts2 - ts1;
Console.WriteLine("{0} minutes", difference.TotalMinutes); // 15 Minutes

这里是demonstration.