2011-08-12 4 views
0

오전 10:00 오전인 DateTime 개체가 있습니다.이 시간은 보고서를 실행할 시간을 나타냅니다. 오전 또는 오전 10시 전에,시간 수학 안내가 필요함

내가 시간 범위로 주위를 계속 연주 :

내 혼란 오전 10시

부분까지 지금부터 남은 시간을 계산하려면 10 후이 될 수 있습니다 지금 하지만 내 결과가 옳지 않다 ... 나는 이것이 간단하다고 확신한다. 그러나 그것은 내가 몇 시간 동안 노력해 왔던 것들 중 하나이며 올바른 방향으로 추진해야한다 ...

timespan 개체 timeTillRun 올바른 수 싶습니다 ... 여기 내가 시도한 무엇입니까 :

{ 
    DateTime scheduledRun = DateTime.Today.AddHours(_timeToStart);//_timeToStart = 10 
    TimeSpan timeTillRun = DateTime.Now - scheduledRun; 
} 

답변

1

이 작동합니다 ...하지만 당신은 뺄셈의 순서를 반대로해야 그것은 오전 10 후 현재의 경우

TimeSpan timeTillRun = scheduledRun - DateTime.Now; 

참고하면, timeTillRun는 음수가 될 것입니다. 현재 시간이 오전 10시 이후인지 확인해야 할 수도 있습니다. 10 시간을 추가하고 ~ DateTime.Today 일을 추가하면 다음 실행 시간을 얻을 수 있습니다. 또는 timeTillRun이 음수인지 테스트 할 수 있습니다. 그렇다면 그냥 하루 만 추가하면됩니다 (timeTillRun += new TimeSpan(1, 0, 0, 0)).

+0

내가 ... 내가 내 솔루션을 게시 @ cdhowie/s의 대답을 원하는 보았다하지만 난 그게입니다 question..but에 추가하는 방법을 몰라 시도 근본적으로 당신이 제안했던 것. .. 나는 당신에게 매우 감사한다!! 솔루션을 게시 할 수 있으면 알려주십시오. – VulcanCCIT

+0

당신은 당신 자신의 질문에 답할 수 있습니다. – Odnxe

1

내가 @Odnxe를보기 전에이

 DateTime timeToStart = DateTime.Today.AddHours(10); 

     TimeSpan timeTillRun; 

     // Checking to see if current time is passed schedule run, if it is then we add a day (this is assuming this is run daily, if days are skipped like weekends for example then this would need some tweaking) 
     if (DateTime.Now > timeToStart) 
      timeTillRun = DateTime.Now.AddDays(1.0) - timeToStart; 
     else 
      timeTillRun = DateTime.Today - timeToStart; 

     double totalHoursRemaining = timeTillRun.TotalHours; // get total hours remaining 
     string prettyRemaining = String.Format("{0} day and {1} hours", timeTillRun.Days, timeTillRun.Hours); // can do some outputting here