我有两个连接值,例如
string BreakOut = "10:15 Mintes";
string BreakIn = "10:30 Minutes";
我希望结果为
Total=15 Minutes
是时差计算。但值不是时间格式,而是字符串格式。我怎样才能做到这一点。请建议一个方法。我试过像
TimeSpan span=Convert.ToDateTime(BreakOut ).Subtract(Convert.ToDateTime(BreakIn ));
答案 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);