我如何转换获得有效结果的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?
}
感谢
答案 0 :(得分:2)
它不能像你期望的那样工作的原因是因为在一天中你没有24小时的工作时间。任务的持续时间是开始和结束之间工作时间的数量,而不是绝对小时数。
由于一天中的默认工作小时数为8,因此您将总分钟数除以480(60分钟* 8小时)以获得天数。你计算的20 * 24恰好也等于480,所以你偶然发现了正确的数字。
当然,不要指望Start + Duration(以天为单位)将等于您的完成日期。那是因为你还必须考虑非工作日,比如周末。因此,您可以在星期五开始为期3天的任务,直到星期二(5个日历日)结束时才会完成。