ms项目中的Task.Duration属性

本文关键字:Duration 属性 Task 项目 ms | 更新日期: 2023-09-27 18:24:48

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

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

但这并不正确。

若我把结果除以60(小时中的分钟)和24(一天中的小时),我得到的结果是不正确的。

但如果我除以20和24,一切都好。我不明白为什么。我使用C#on.Net 3.5和Office主互操作程序集(适用于Office 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?
}

感谢

ms项目中的Task.Duration属性

它之所以不能像你预期的那样工作,是因为一天中你没有24小时的工作时间。任务的持续时间是指从开始到结束的工作时间,而不是绝对小时数。

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

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