【问题标题】:C# TimeSpan with Exclusions带有排除项的 C# TimeSpan
【发布时间】:2013-09-17 13:41:41
【问题描述】:

我知道这可能是不可能的,但有人知道.NET 中是否有任何快捷方式或机制允许我这样做。

我有一本“日记”

上午 9 点 - 下午 5 点

在这本日记中我有活动或“约会”

上午 10 点 - 下午 12 点 - 预约 1
1PM - 1:30PM - 预约 2

我要求的是有一种工具可以让我反转日记以在这些约会之外给我空闲空间。

例如它会返回给我一个列表

上午 9 点 - 上午 10 点
中午 12 点 - 下午 1 点
下午 1:30 - 下午 5 点

这样我就可以在我的程序中使用。

有什么想法吗?

【问题讨论】:

  • 你有“日记”对象或列表或数据库表? .发布更多信息......
  • TimeSpan 与此有什么关系?您已经尝试过什么,结果以什么方式不令人满意?在给定的非空闲时间间隔列表中找到给定时间间隔内的空闲时间块应该不难;如果您可以忍受有时次优的性能,那它甚至应该很容易。

标签: c# asp.net arrays time timespan


【解决方案1】:

您可能想查看这篇 CodeProject 文章:Time Period Library for .NET,特别是 TimeGapCalculator 示例。

【讨论】:

  • 哇,这个网站很有竞争力。我向你快速的手指鞠躬。
  • @Oliver:嗯,是的,就是那些fake internet points people are willing to do anything for。由于我前段时间使用过那个库,所以我记得它可能会有所帮助。
  • TheMonkeyMan 正在寻找的功能在TimeGapCalculator 中编辑:哦,真的.. 你很快:P
【解决方案2】:

是的,有!我强烈建议使用 CodeProject 中名为 TimePeriod 的免费库。

这个库会处理

【讨论】:

    【解决方案3】:

    自己实现似乎并不难:

    • 按开始日期对日记约会进行排序。
    • 从开始日记>第一次约会开始有一段空闲时间
    • 自上次约会后有一段空闲时间 > 结束日记
    • 重复约会,中间的每个时间段都是空闲时间段

    【讨论】:

    • 对于多个约会具有相同开始时间的情况,应考虑一些因素。例如,明智的做法是按开始时间对它们进行排序,然后按结束时间,这样后一个约会在迭代时总是会产生更小的差距。
    • 我假设您不允许在约会中重叠。如果你这样做,它确实会变得更加复杂。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多