具有C#/ VB.NET周期支持的日期和时间库?

时间:2009-09-09 10:55:04

标签: c# .net vb.net

我正在寻找一个图书馆在工作日和时间的支持下按时间段进行集合操作。我已经开始自己动手了,但这似乎是一个容易出错的工作,所以我想要一个经过测试的解决方案。我不介意花钱。

如果我有一组两个时间段(可以是几个)

设定:

// [period 1]:
TimeSet.Add(1 January 2008-31 January 2008 every Tuesday 14:00-15:00) 
// [period 2]
TimeSet.AddWithOr(1 January 2008-15 January 2008 every Tuesday 13:00-14:00) 

结果:

TimeSet.ContainsTime(2 January 2008 13:45) = False
TimeSet.ContainsTime(2 January 2008 14:15) = True // [period 1]
TimeSet.ContainsTime(2 January 2008 13:15) = True // [period 2]

我还需要范围检查功能:

// Only Tuesday 13-15 is in range:
TimeSet.ContainsTime(24 December 2007 13:45,1 January 2008 13:00) = False
TimeSet.ContainsTime(24 December 2007 13:45,2 January 2008 12:59) = False 
TimeSet.ContainsTime(24 December 2007 13:45,2 January 2008 13:00) = True

其他更高级的设置功能是一个优势。

我尝试使用Google搜索,但无法找到任何内容。

4 个答案:

答案 0 :(得分:1)

我不知道作为C#/ .NET框架存在的任何内容,但是您可以调整Quartz project's(一个C#调度程序)日历名称空间。这包括CronCalendar对象。我暂时没有使用cron,但我记得它支持你所追求的那种事件系统。

您可以在codeproject上使用quite a few helper extensions,例如AddBusinessDay方法也可以提供帮助。

在解析格式化的内容方面 - 您可能希望将其更改为流畅的界面,以便更快地进行开发/测试,并且无需编写复杂的令牌解析类。你可以保持它的Cron格式,使Quartz代码更容易集成,除非它被非技术人员使用。

答案 1 :(得分:1)

答案 2 :(得分:0)

您可以使用多功能DateTime结构。它有 用于比较两个DateTime的运算符,例如,少于。从而 设置操作和范围检查功能 在一个简单的类中为此实现相当简单 目的

这样一个类中的中央数据结构可以是一个列表 DateTime范围按开始时间排序。如果是新的DateTime 添加范围然后将其与现有DateTime合并 范围是否有任何重叠。如果它与其中一个合并 他们需要查看是否有新的列表 DateTime范围现在重叠(然后需要合并)。 重复此操作,直到不再有重叠为止。

答案 3 :(得分:-2)

查看TimeSpan结构