2014-02-21 1 views
0

나는 시작 시간과 시간 제한 (분)을 고려할 때 시간 초과가 발생해야하는 날짜를 계산하는 메소드를 작성해야합니다.특정 기간 동안 일시 중지 된 시간 초과 계산하기

그러나 제한 시간은 틱 시작 날짜 시간, 틱 스톱 중지 날짜 시간 및 열린 날짜 목록에 의해 결정되는 특정 날짜의 특정 시간에만 '틱'해야합니다. 주어진 예를 들어

, 다음

  • 시작 날짜 : 금요일 21/02/2014 15시
  • 시간 초과 : 7백20분 (12시간)
  • 오픈 일 : 월요일, 화요일, 수요일, 목요일, 금요일
  • 틱 (tick) 시작 시간 : 09:00
  • 비 틱 정지 시간 : (이 토요일과 일요일에 체크하지 않는 한) 18시 반

계산 된 타임 아웃 날짜 월요일 24/02/2014 17시 반해야한다.

이 글은 C#이지만 기술적으로는 언어에 구애받지 않습니다.

이렇게하는 '우아한'방법이 있습니까? 또는 단순히 시간 초과가 똑딱 거리지 않아야한다고 결정한 추가 시간을 반복하고 추가하는 경우입니까?

+0

다른 기간에 카운트하지 않는 카운트 다운이 아니라 특정 기간 동안 카운트 다운하는 카운트 다운으로 프레임하는 것이 더 합리적입니까? – Bobson

+0

아마도 그럴 수는 있지만 항상 움직이는 것은 아닙니다. 그것은 5 분마다 깨우고,이 'timeout'datetime이 경과했는지 여부에 따라 아무 것도 할 필요가 있는지를 계산합니다. – w69rdy

+0

한번도 시도한 적이 없지만 한번보세요. ['Calendar'] (http://msdn.microsoft.com/en-us/library/system.globalization.calendar%28v=vs.110%29.aspx) 클래스에 추가하고 목적에 맞게 사용자 지정 달력을 작성하십시오. – Bobson

답변

0

모든 기간 (예 : 1 초)마다 타이머를 설정하면 타이머의 콜백 처리기에서 틱 수를 늘릴 수 있습니다.

다음 중 한 가지 방법으로 접근합니다. 어느 것이 든 상관없이 매초마다 콜백을 실행할 수 있으며, 콜백에서이 기간 동안 증분을 건너 뛰거나 건너 뛸 수 있는지 여부를 확인할 수 있습니다 (틱 시간이 아닌 기간내). 그렇다면, 애프터 다음 콜백 을 실행할 수있는 타이머의 콜백 시간을 조정하는 경우,

그렇지 않으면, 내가 상관없이 모든 시간을 증가 수 없었다 다음 비 틱 기간이 다가오고 있는지 확인하기 위해 수표를 가지고 틱 시간이 지남.

+0

항상 실행되는 것은 아니지만 할 수 있습니다. 그것은 5 분마다 일어 났고,이 'timeout'datetime이 아직 경과했는지 여부에 따라 아무 것도 할 필요가 있는지 계산합니다. – w69rdy

관련 문제