如何在时间跨度内制作8小时

时间:2015-03-06 10:12:48

标签: c# timespan

TimeSpan默认日将24小时视为1天。我希望有8小时为1天。 因此,如果我给1天,它应该认为它是8小时而不是24小时。 如果我给23小时,它应该考虑为2天7小时。

`

Task T1 = project.AddTask("T1");
Task T2 = project.AddTask("T2");
T1.Start = new DateTime(2015, 3, 9);
T1.Duration = new TimeSpan(1, 2, 0, 0); 
T2.Duration =new TimeSpan(0, 23, 0, 0)
Console.WriteLine(T1.Name + "Duration: " + T1.Duration)://Considers 1 day as 24 hrs;

` 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

如果您正在尝试计算“工作日”和加班时间,则需要考虑许多问题。我以前做过这个,我建议不要使用timepan对象

然而,一个微不足道的解决方案是

    public class Task
    {
        public DateTime Start;
        public TimeSpan Duration;

        public TimeSpan GetWorkingDays()
        {
            int days = (int)Math.Floor(this.Duration.TotalHours/8);
            int hours = (int)Math.Floor(this.Duration.TotalHours - days * 8);

            return new TimeSpan(days, hours, 0, 0);
        }
    }