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:

checking the task has splits

API for Calculating Finish Date

The Calendar class provides the method:

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

FAQ

Q: Can I also calculate the start date of a split task?

Q: Does this work if the task has multiple splits?

Q: Do I need Microsoft Project installed to use this?

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.