2

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

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

但它不正确。

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

但如果我除以 20 和 24 就可以了。我不明白为什么。我在 .Net 3.5 和 Office Primary Interop Assemblies 上使用 C#(Microsoft.Office.Interop.MSProject适用于 office 2010)。

我使用该代码:

 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?
}

谢谢

4

1 回答 1

2

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

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

当然,不要期望开始 + 持续时间(以天为单位)将等于您的完成日期。那是因为您还必须考虑非工作日,例如周末。因此,您可以有一个从周五开始的为期 3 天的任务,直到周二结束(5 个日历日)才能完成。

于 2012-03-20T05:29:05.900 回答