2014-02-21 51 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