如何在时间跨度内每天8小时



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;

`有办法做到这一点吗?

如果您试图计算"工作日"和加班时间,那么您需要考虑许多问题。我以前做过,我建议不要使用时间跨度对象

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

    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);
        }
    }

最新更新