是否有一个同时包含dateTime和Timespan的类?

时间:2011-02-17 09:43:55

标签: c# datetime timespan

我正在寻找一个代表并发事件的类, 例如: 每个工作日,从10:00开始,需要2个小时。等。

我知道如何实现它我的自我,我想知道是否有一个预先设定的类。

TNX!

2 个答案:

答案 0 :(得分:8)

不,但这里有一个带回家:

public class DateTimeAndTimeSpan
{
    public DateTime Time{get;set;}
    public TimeSpan Duration{get;set;}
}

答案 1 :(得分:1)

我会让这样一个类不可变,甚至可能是一个结构。

您可以选择开始/结束或开始/持续时间内部表示。应该对公共API不可见。

如果您喜欢,可以重载一些运算符并覆盖EqualsGetHashCode以获得完整的值语义。

public class TimeInterval
{
    private readonly DateTime _start;
    private readonly DateTime _end;

    public DateTime Start { get { return _start; } }
    public DateTime End { get { return _end; } }
    public TimeSpan Duration { get { return _end - _start; } }

    public TimeInterval(DateTime start, DateTime end)
    {
        if(end.Kind != start.Kind)
          throw new ArgumentException("Incompatible DateTimes");

        _start = start;
        _end = end;
    }

    public TimeInterval(DateTime start, TimeSpan duration)
    {
        _start = start;
        _end = start.Add(duration);
    }
}