2012-02-15 39 views
2

如何將Task.Duration轉換爲有效結果? 我發現MSDN這個屬性的解釋:Task.Duration ms項目中的屬性

獲取或設置一個任務的持續時間(以分鐘爲單位)。

但它不能正確工作。

如果我將結果除以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? 
} 

感謝

+4

這並不完全清楚你看到了什麼,或者你爲什麼認爲它錯了,或者你想要達到什麼目的。請閱讀http://tinyurl.com/so-hints並澄清你的問題。 – 2012-02-15 16:12:19

回答

2

的原因,就像你想到的是,因爲在一天你沒有在24小時的工作時間不工作。任務的持續時間是開始和結束之間的工作時間的量,而不是絕對小時數。

由於一天的默認工作小時數是8,所以您將總分鐘數除以480(60分鐘* 8小時)以獲得天數。你的20 * 24的計算恰好也等於480,所以你偶然發現了正確的數字。

當然,不要指望開始+持續時間(天)會等於您的完成日期。那是因爲你還必須考慮非工作日,比如週末。因此,您可以從星期五開始執行爲期3天的任務,並且直到星期二(5個日曆日)的一天結束纔會結束。