ms项目中的Task.Duration属性

时间:2012-02-15 16:04:41

标签: c# .net ms-project

我如何转换获得有效结果的Task.Duration? 我在MSDN中找到了关于此属性的解释:

  

获取或设置任务的持续时间(以分钟为单位)。

但它不正确。

如果我将结果除以60(小时分钟)和24小时(白天小时),我得到的结果不正确。

但如果我除以20和24,那就没关系了。我不明白为什么。 我在.Net 3.5和Office主互操作程序集上使用C#(办公室2010 Microsoft.Office.Interop.MSProject)。

我使用该代码:

 void SetProperties(MSProject.Task o, string version)
 {
                Wbs = o.WBS.ToString();
                Name = o.Name.ToString();
                StartDate = (System.DateTime) o.Start;
                FinishDate = (System.DateTime)o.Finish;
                Iteration = version;
                duration = (Convert.ToInt16(o.Duration)/10/24).ToString();//after result //divided by 2 I get correct result. Why?
}

感谢

1 个答案:

答案 0 :(得分:2)

它不能像你期望的那样工作的原因是因为在一天中你没有24小时的工作时间。任务的持续时间是开始和结束之间工作时间的数量,而不是绝对小时数。

由于一天中的默认工作小时数为8,因此您将总分钟数除以480(60分钟* 8小时)以获得天数。你计算的20 * 24恰好也等于480,所以你偶然发现了正确的数字。

当然,不要指望Start + Duration(以天为单位)将等于您的完成日期。那是因为你还必须考虑非工作日,比如周末。因此,您可以在星期五开始为期3天的任务,直到星期二(5个日历日)结束时才会完成。