是否有一个类将 dateTime 和 Timespan 同时保存在一起?

发布于 2024-10-18 00:03:29 字数 104 浏览 3 评论 0原文

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

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

tnx!

I'm looking for a class that represents an concurrent event,
for example:
On every work day, meeting from 10:00 that takes 2 hours. etc..

I know how to implement it my self, i wondered if there is a predifined class.

tnx!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

提赋 2024-10-25 00:03:29

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

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

No, but here's one to take home:

public class DateTimeAndTimeSpan
{
    public DateTime Time{get;set;}
    public TimeSpan Duration{get;set;}
}
默嘫て 2024-10-25 00:03:29

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

您可以选择开始/结束或开始/持续时间内部表示。应该对公共 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);
    }
}

I'd make such a class immutable, and perhaps even a struct.

You can choose either a start/end or start/duration internal representation. Should be invisible to the public API.

If you're fancy you can overload a few operators and override Equals and GetHashCode to get full value semantics.

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);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文