2

Task.Duration有効な結果を得るためにどのように変換する必要がありますか? MSDNでこのプロパティに関する説明を見つけました:

タスクの期間 (分単位) を取得または設定します。

しかし、それは正しく動作しません。

結果を 60 (分) と 24 (時間) で割ると、間違った結果が得られます。

しかし、20 と 24 で割ればすべて問題ありません。そして、私はその理由を理解していません。.Net 3.5 および Office Primary Interop Assemblies ( Microsoft.Office.Interop.MSProjectoffice 2010 用) で C# を使用しています。

私はそのコードを使用します:

 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

期待どおりに機能しない理由は、1 日で 24 時間の作業時間がないためです。タスクの期間は、絶対的な時間数ではなく、開始から終了までの作業時間です。

1 日の既定の作業時間数は 8 であるため、合計分数を 480 (60 分 * 8 時間) で割り、日数を取得します。20 * 24 の計算はたまたま 480 にも等しいので、正しい数を偶然見つけました。

もちろん、開始日 + 期間 (日数) が終了日と同じになるとは思わないでください。これは、週末などの非稼働日も考慮する必要があるためです。そのため、金曜日に開始する 3 日間のタスクを作成し、火曜日 (5 暦日) の終日まで終了しない場合があります。

于 2012-03-20T05:29:05.900 に答える