如何从串联值中找到总数?
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
.
我有两个串联的值,例如
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
.