如何将时间加在一起?

时间:2017-04-27 04:01:07

标签: c# datetime

我正在使用C#中的时间表程序,用户每天从组合框下拉列表中选择工作时间为一天。下拉选项以15分钟为增量(:15,:30,:45,1:00,1:15等等)。因此在星期一,用户可以选择5:30(意味着他/她工作5小时30分钟,而不是5:30时间)。在星期二,用户可以选择6:45,依此类推。

所选项目是指当天的总工作小时数和分钟数,而不是时间间隔或特定时间点,而是当天的总小时数和分钟数。

如何将每天选择的小时和分钟相加,以获得本周的总计?

据我所知,组合框中的项是字符串,所以我尝试将字符串转换为DateTime,但这不起作用。我尝试将字符串转换为小数,然后转换为DateTime,但我也无法做到这一点。

我如何每天工作时间/分钟,并获得一周的总数?

帮助!?我正在失去理智! :)

3 个答案:

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

Working Example