Class MultiDuration
Represents a set of durations that belong to this time span. Durations may overlap and can be explicitly flattened if required.
Inheritance
Inherited Members
Namespace: TimeCockpit.Data.DataModel
Assembly: TimeCockpit.Data.dll
Syntax
public class MultiDuration
Constructors
MultiDuration(IEnumerable<IDuration>)
Initializes a new instance of the MultiDuration class.
Declaration
public MultiDuration(IEnumerable<IDuration> parts)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<IDuration> | parts | duration parts of the new multiduration. |
MultiDuration(IEnumerable<MultiDuration>)
Initializes a new instance of the MultiDuration class by unionizing the given durations.
Declaration
public MultiDuration(IEnumerable<MultiDuration> durations)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<MultiDuration> | durations | duration parts of the new multiduration. |
MultiDuration(DateTime, DateTime)
Initializes a new instance of the MultiDuration class. Shorthand version for a single duration.
Declaration
public MultiDuration(DateTime beginTime, DateTime endTime)
Parameters
Type | Name | Description |
---|---|---|
System.DateTime | beginTime | begin time stamp of the duration. |
System.DateTime | endTime | end time stamp of the duration. |
Properties
Durations
Gets the durations of this multi-duration.
Declaration
public IEnumerable<IDuration> Durations { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<IDuration> |
EarliestBegin
Gets the earliest begin time
Declaration
public DateTime EarliestBegin { get; }
Property Value
Type | Description |
---|---|
System.DateTime |
Flat
Gets a value indicating whether none of the durations overlap.
Declaration
public bool Flat { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
LatestEnd
Gets the latest end time.
Declaration
public DateTime LatestEnd { get; }
Property Value
Type | Description |
---|---|
System.DateTime |
TotalTime
Gets the total time / sum of the multi duration. Be aware that overlapping times are included in the calculation. Use Flatten before TotalTime if it is required that overlapping times are counted only once.
Declaration
public TimeSpan TotalTime { get; }
Property Value
Type | Description |
---|---|
System.TimeSpan |
Methods
And(MultiDuration)
Logical 'and' operation between this and another multi-duration.
Declaration
public MultiDuration And(MultiDuration other)
Parameters
Type | Name | Description |
---|---|---|
MultiDuration | other | Other multi-duration. |
Returns
Type | Description |
---|---|
MultiDuration | Logical 'and' between this and another multi-duration. |
Cut(MultiDuration)
cuts another multi duration by this multi duration. logical "this AND source" result does not contain elements of 0 duration
Declaration
[Obsolete("Use MultiDuration.And instead. Cut does not offer consistent naming compared to 'and', 'or' and 'subtract'.")]
public MultiDuration Cut(MultiDuration source)
Parameters
Type | Name | Description |
---|---|---|
MultiDuration | source | Source duration to cut agains this multi duration. |
Returns
Type | Description |
---|---|
MultiDuration | a new multiduration containing the source multiduration cut by this multiduration. |
Flatten()
By default, multiple durations might overlap. the flatten method modifies the durations to not overlap and turns two overlapping durations into a single duration.
Declaration
public void Flatten()
Intersects(DateTime, DateTime)
Checks whether a given duration intersects with any of the durations.
Declaration
public bool Intersects(DateTime begin, DateTime end)
Parameters
Type | Name | Description |
---|---|---|
System.DateTime | begin | begin of duration to check |
System.DateTime | end | end of duration to check |
Returns
Type | Description |
---|---|
System.Boolean | true if duration intersects |
Intersects(IDuration)
Checks whether a given duration intersects with any of the durations.
Declaration
public bool Intersects(IDuration duration)
Parameters
Type | Name | Description |
---|---|---|
IDuration | duration | duration to check |
Returns
Type | Description |
---|---|
System.Boolean | true if duration intersects |
IsInside(DateTime)
checks whether a given timeStamp is within (or on the border of) any of the durations.
Declaration
public bool IsInside(DateTime timeStamp)
Parameters
Type | Name | Description |
---|---|---|
System.DateTime | timeStamp | time stamp to check against multi duration. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if timeStamp is within any duration. |
Or(MultiDuration)
Logical 'or' operation between this and another multi-duration.
Declaration
public MultiDuration Or(MultiDuration other)
Parameters
Type | Name | Description |
---|---|---|
MultiDuration | other | Other multi-duration. |
Returns
Type | Description |
---|---|
MultiDuration | Logical 'or' between this and another multi-duration. |
Subtract(MultiDuration)
Logically subtract another multi-duration from this one.
Declaration
public MultiDuration Subtract(MultiDuration other)
Parameters
Type | Name | Description |
---|---|---|
MultiDuration | other | Other multi-duration. |
Returns
Type | Description |
---|---|
MultiDuration | Subraction result |