Duration

Duration structure

Represents duration in a project.

public struct Duration : IEquatable<Duration>

Properties

Name Description
IsElapsed { get; } Gets a value indicating whether time unit is elapsed. The flag which determines whether this Duration instance is elapsed.
IsEstimated { get; } Gets a value indicating whether time unit is estimated. The flag which determines whether this Duration instance is estimated.
TimeSpan { get; } Gets TimeSpan instance of this Duration object. The TimeSpan instance of this Duration object.
TimeUnit { get; } Gets time unit type for this object. The time unit type of this Duration instance.

Methods

Name Description
static Parse(Project, string) Converts the specified string to the instance of Duration struct.
Add(double) Adds specified double value to this duration.
Add(Duration) Adds specified duration to this duration.
Convert(TimeUnitType) Converts Duration object to another duration with specified time units.
Equals(Duration) Returns a value indicating whether this instance is equal to a specified object.
override Equals(object) Returns a value indicating whether this instance is equal to a specified object.
override GetHashCode() Returns a hash code value for this object.
Subtract(double) Subtracts specified double value from this duration instance.
Subtract(Duration) Subtracts specified duration from this duration instance.
ToDouble() Converts Duration object to Double value.
override ToString() Returns a string representation of this instance.
static ParseTimeSpan(string) Parses duration string in format “PT–H–M–S–”.
operator == Returns a value indicating whether this instance is equal to a specified object.
operator != Returns a value indicating whether this instance is not equal to a specified object.

Examples

Shows how to update a duration of tasks.

var project = new Project(DataDir + "TaskDurations.mpp");

// get a task
var task1 = project.RootTask.Children.GetById(1);

// update the task duration
var duration1 = task1.Get(Tsk.Duration);

// add one day to the task 1
duration1 = duration1.Add(project.GetDuration(1, TimeUnitType.Day));

// set a new duration to the task
task1.Set(Tsk.Duration, duration1);
Console.WriteLine("The duration of task 1: " + task1.Get(Tsk.Duration));

// get another task
var task2 = project.RootTask.Children.GetById(2);
var duration2 = task2.Get(Tsk.Duration);

// change the duration by using actual time unit type
Console.WriteLine("The time unit of duration: " + duration2.TimeUnit);
duration2 = duration2.Add(1d /* the time unit type of duration2 will be used */);

// set a new duration to the task
task2.Set(Tsk.Duration, duration2);
Console.WriteLine("The duration of task 2: " + task1.Get(Tsk.Duration));

See Also