2011-10-10 2 views
1

---- 편집 ---- 사이에 발생하는 몇 번시간 범위는 두 가지 사항 날짜

오 메신저 미안 그 거대한 misstake :

이 ...

나에게 다시 질문을 물어 보자이었다 을 Heres 예를 들어

,

Datetime startTime = 2011-10-08 12:30:00 
Datetime endTime = 2011-10-10 15:00:00 

12시 0분 0초 몇 번 않습니다 - 13시 0분 0초는 두 날짜 시간 사이에 발생? 결과를 미리 2.

감사를 기대

2011-10-08 12:30:00 - 2011-10-08 13:00:00 Not Ok (time has alredy started) 
2011-10-09 12:00:00 - 2011-10-09 13:00:00 Ok 
2011-10-10 12:00:00 - 2011-10-10 13:00:00 Ok 

!

+1

왜 3이 될 것으로 예상합니까? TimeSpan은 시간 길이를 나타냅니다. 귀하의 예는 13 시간 0 분 0 초를 나타냅니다. 성취하고자하는 것에 대해 더 자세하게 설명해 주시겠습니까? –

+0

시작 시간과 종료 시간 사이에 13 시간 동안 발생하는 횟수를 확인 하시겠습니까? 아니면 주어진 시작/종료 시간 사이에 13:00 (1pm)이 발생하는지 확인하려고하십니까? –

+0

업데이트 내 첫 번째 게시물 – user943369

답변

1

당신의 업데이 트를 본 후 당신은 확인하고 경계가 당신의 시작과 끝 날짜 내 경우 시간 특정 가을을 확인 할 수있는 일 결정과 같은 일을 할 것입니다. 아이디어로서, 내가 던진 몇 가지 샘플 코드가있다.

private static void CheckTimes() 
    { 
     DateTime start = DateTime.Parse("2011-10-08 12:30:00"); 
     DateTime end = DateTime.Parse("2011-10-10 15:00:00"); 
     // variable to use for bound checking (Date property sets the hour to 00) 
     DateTime boundscheck = start.Date; 
     // variable containing results 
     int timesFound = 0; 

     // This loop assumes we are only looking for one match per day 
     for (int i = 0; i <= (end - start).Days; i++) 
     { 
      // set the lower bound to yyyy-mm-dd 12:00:00 
      var lowerbound = boundscheck.Date.AddHours(12); 
      // set the upper bound to yyyy-mm-dd 13:00:00 
      var upperbound = lowerbound.AddHours(1); 
      //determine if bounds are within our start and end date 
      if (lowerbound >= start && upperbound <= end) 
      { 
       timesFound++; 
      } 
      // increment boundscheck variable by one day 
      boundscheck = boundscheck.AddDays(1); 
     } 
    } 

희망이 있습니다.

+0

고마워! 그냥 내가 뭘 찾고 있었는지! 잘 했어! – user943369

4
(endTime-startTime).Ticks/timeSpan.Ticks 
1

간격으로 나눈 값의 차이를 나눕니다.

TimeSpan timeSpan = new TimeSpan(24, 00, 00); // one day 

DateTime start = new DateTime(2011, 10, 08, 11, 00, 00); 
DateTime end = new DateTime(2011, 10, 10, 23, 00, 00); // 2 and 1/2 days later 

var occurances = ((end - start).Ticks/(float)timeSpan.Ticks); // 2.5f