2012-01-22 12 views
1

datetime과 now 사이의 경과 시간을 계산하고 싶습니다. 이것은 내가 무엇을 가지고 :시간대와 현재 날짜 시간 사이

TimeSpan SinceStatusChange = new TimeSpan(); 
SinceStatusChange = (double)(DateTime.Now.Date - StatusDateTime).TotalMinutes; 

기본적으로,이 조건문을 작성 찾고 있어요 : 나는 "SinceStatusChange는 ="그래서 내가 할 수 나중에 테스트의 경우 라인을 쓰기 어떻게

if (SinceStatusChange is greater than 180 minutes) 

을 값이 180보다 큰 경우

감사합니다.

+1

(이중)에 밑줄이 표시되어 'double'을 TimeSpan으로 변환 할 수 없다는 것을 나타내며 (이중) 제거 할 때 여전히 동일한 메시지를 제공합니까? – frenchie

+0

@frenchie :'double'은'TimeSpan'이 아니기 때문에. –

+0

TotalMinutes가 double을 반환하므로 전송할 필요가 없습니다. –

답변

4

글쎄, 에 double을 할당하려고합니다. 명백한 이유 때문에 작동하지 않습니다. 이미 원하는 것을 가지고 있습니다. 단지 다음을 사용하십시오 :

// the 'Minutes' property of a TimeSpan object is a double, 
// so the result is a double, not a new TimeSpan object. 
double elapsed = (DateTime.Now - StatusDateTime).TotalMinutes; 
if(elapsed > 180) 
{ 
    // do stuff 
} 
1

TimeSpan에서 TotalMinutes를 호출하면 double이 반환됩니다. 두 배로 SinceStatusChange의 서명을 변경하고 당신은 당신은 단지 TimeSpan의 사용, 더 많은 종류 안전한 방법으로이 작업을 수행 할 수 있습니다

double SinceStatusChange; 
SinceStatusChange = (DateTime.Now.Date - StatusDateTime).TotalMinutes; 

if (SinceStatusChange > 180) 
1

처럼 사용할 수 있습니다 : 이것은 당신에게 두 번 당신을 줄 것이다

TimeSpan _180mins = new TimeSpan(3,0,0); 
var timeDiff = DateTime.Now.Date - StatusDateTime; 

if(timeDiff < _180mins) 
{ 
} 
+0

식별자는 숫자로 시작할 수 없습니다. –

+0

@EdS. - 고마워. 잘 했어. – Oded

1

을 찾고있는 ':

if (DateTime.Now.Subtract(statusDateTime).TotalMinutes > 180) 
    { 
     //do work. 
    } 
2

당신은 아주 간단하게이 작업을 수행 할 수 있습니다

if (DateTime.Now - StatusDateTime > TimeSpan.FromMinutes(180)) 
{ 
    // ... 
}