2014-02-21 56 views
0

我的任务是编写一个方法,该方法计算以给定开始日期时间和超时时间(以分钟为单位)超时应发生的日期时间。计算在特定时间段内暂停的超时

但是,超时只能在某些日子的特定时间内“打勾”,这是由非打勾开始日期时间,非打勾日期时间和打开日期清单确定的。

例如,给定下列:

  • 开始日期时间:星期五21/02/2014 15:00
  • 超时 720分钟(12小时)
  • 打开天:周一,周二,周三,周四,周五
  • 非勾号​​开始时间:09:00
  • 非蜱停止时间:18:30

计算的超时日期时间应该是星期一24/02/2014 17:30(因为它没有在周六和周日打勾)。

我正在用C#编写它,但它的技术语言是不可知的。

有没有一种“优雅”的方式来做到这一点?或者它仅仅是一个循环和添加额外时间的情况,它确定超时应该停止滴答滴答?

+0

将它定义为只在某些时段倒计时的倒计时,而不是在其他时段计数的倒计时是否更有意义? – Bobson

+0

可能,但它不是一直运行的东西。它每5分钟醒来一次,并根据这个“超时”日期时间是否已经过去计算是否需要做任何事情。 – w69rdy

+0

我从来没有尝试过这样做,但你可能想看看在['Calendar'](http://msdn.microsoft.com/zh-cn/library/system.globalization.calendar%28v=vs.110%29.aspx)类中,并为您的目的编写自定义日历。 – Bobson

回答

0

如果您设置了一个计时器来勾选每个时间段(例如每秒),则可以在计时器的回调处理程序中增加一些滴答声。

我会采取以下方法之一。无论如何,我都可以每秒运行一次回调,并且在回调中,我可以检查是否应该增加或跳过此期间的增量(在非节拍时间段内)。

否则,我可能会增加每次不管是什么,然后有一个检查,看看是否非蜱期的临近,如果是这样,那么调整计时器的回调时间后运行下一个回调非勾选时间段已过。

+0

可以,虽然它不是一直运行的东西。它每5分钟醒来一次,根据这个“超时”日期时间是否已经过去,计算它是否需要做任何事情 – w69rdy