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;
` 有没有办法做到这一点?
答案 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);
}
}