Calculating Split Task's Finish Date
In Microsoft Project, tasks can be split if the schedule is interrupted. With Aspose.Tasks for .NET, you can programmatically calculate the finish date of split tasks, making reporting and automation easier.
What Are Split Tasks?
A split task is a task whose execution is divided into two or more segments due to interruptions (e.g., waiting for resources, external dependencies).
In Microsoft Project, split tasks appear in the Gantt Chart view as separate bars connected by dotted lines:
API for Calculating Finish Date
The Calendar class provides the method:
- GetTaskFinishDateFromDuration
- Parameters:
- Split task (Task object)
- Task duration (
Duration
)
- Returns:
- The calculated finish date (
DateTime
)
- The calculated finish date (
- Parameters:
This method takes into account the calendar rules and the interruption segments of the task.
Example: Calculating Split Task Finish Date in C#
Here’s a C# example showing how to calculate a split task’s finish date:
1Project project = new Project("New Project.mpp");
2
3// Find a split task
4Task splitTask = project.RootTask.Children.GetByUid(4);
5
6// Find the project calendar
7Calendar calendar = project.Get(Prj.Calendar);
8
9// Calculate task's finish date with different durations
10Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 8 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(8, 0, 0)));
11Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 16 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(16, 0, 0)));
12Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 24 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(24, 0, 0)));
13Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 28 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(28, 0, 0)));
14Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 32 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(32, 0, 0)));
15Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 46 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(46, 0, 0)));
16Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 61 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(61, 0, 0)));
17Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 75 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(75, 0, 0)));
18Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 80 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(80, 0, 0)));
19Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 120 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(120, 0, 0)));
20Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 150 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(150, 0, 0)));
Key Benefits
- Accurately calculates finish dates for interrupted tasks.
- Considers calendar working times and splits.
- Works with MPP and XML project formats.
- Automates what otherwise requires manual verification in Microsoft Project.
FAQ
Q: Can I also calculate the start date of a split task?
- Yes. You can retrieve the
ActualStart
orStart
property depending on the task type.
Q: Does this work if the task has multiple splits?
- Yes. The method accounts for all split segments.
Q: Do I need Microsoft Project installed to use this?
- No. Aspose.Tasks for .NET works independently of Microsoft Project.