如何从连接值中查找总数?

时间:2015-02-27 07:39:02

标签: c# datetime timespan

我有两个连接值,例如

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

我希望结果为

Total=15 Minutes

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

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

3 个答案:

答案 0 :(得分:1)

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

如果Mintes是拼写错误且您的值始终采用相同的标准格式,则可以使用空格轻松拆分它们,然后解析为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

答案 1 :(得分:0)

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

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;
        }

答案 2 :(得分:0)

我贬低了你的问题,但也许你真的不知道有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);