我正在使用C#中的时间表程序,用户每天从组合框下拉列表中选择工作时间为一天。下拉选项以15分钟为增量(:15,:30,:45,1:00,1:15等等)。因此在星期一,用户可以选择5:30(意味着他/她工作5小时30分钟,而不是5:30时间)。在星期二,用户可以选择6:45,依此类推。
所选项目是指当天的总工作小时数和分钟数,而不是时间间隔或特定时间点,而是当天的总小时数和分钟数。
如何将每天选择的小时和分钟相加,以获得本周的总计?
据我所知,组合框中的项是字符串,所以我尝试将字符串转换为DateTime,但这不起作用。我尝试将字符串转换为小数,然后转换为DateTime,但我也无法做到这一点。
我如何每天工作时间/分钟,并获得一周的总数?
帮助!?我正在失去理智! :)
答案 0 :(得分:1)
我尝试将字符串转换为
DateTime
,但这不起作用。
将字符串转换为整数,表示分钟。从这些整数构造TimeSpan
个对象,传递中间参数的整数。
使用operator +
将TimeSpan
个对象添加到一起。结果将为您提供总时间,以时间跨度表示,如有必要,您可以从中查询小时,分钟甚至天数。
答案 1 :(得分:0)
组合框项目应为TimeSpan
,可以加在一起。
答案 2 :(得分:0)
有时这可能是当前情况的解决方法,无论如何都要将其作为建议;
让timeList
成为您输入的字符串列表(请使用0:15
15分钟)。
List<string> timeList = new List<string>();
timeList.Add("0:15");
timeList.Add("2:00");
timeList.Add("1:00");
timeList.Add("2:15");
timeList.Add("3:15");
timeList.Add("4:15");
然后,您可以使用以下代码处理结果:
TimeSpan totalTime = new TimeSpan(0, (int)timeList.Sum(x => getMinutes(x)), 0);
getMinutes()
方法定义如下:
public static double getMinutes(string timeIn)
{
string[] components = timeIn.Split(':');
TimeSpan ts = new TimeSpan(int.Parse(components[0]), int.Parse(components[1]), 0);
return ts.TotalMinutes;
}