具有排除项的 C# 时间跨度

本文关键字:时间跨度 排除 | 更新日期: 2023-09-27 18:31:41

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

我有一本"日记"

上午9时至下午5时

在这本日记中,我有事件或"约会"

上午10时至中午12时 - 预约1
下午1时至下午1时30分 - 预约2

所要求的是有一个工具,我可以反转日记,为我提供这些约会之外的自由空间。

例如,它会向我返回一个列表

上午

9时至上午10时
中午12时至下午1时
下午1时30分至5时

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

有什么想法吗?

具有排除项的 C# 时间跨度

你可能想要查看这篇 CodeProject 文章:.NET 的时间段库,特别是TimeGapCalculator示例。

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

此库将处理

自己实现似乎并不难:

  • 按开始日期对日记约会进行排序。
  • 从开始日记>第一次预约有一个免费时段
  • 从最后一次预约>结束日记起一个免费时段
  • 迭代约会,中间的每个时间段都是一个空闲期