2017-10-23 10 views
1

TimeSpan에서 음수 시간을 처리하는 방법은 무엇입니까?TimeSpan의 음수 처리

시간이 음수이면 00:00:00이어야합니다. allow가 0이 될 것입니다 경우에만 사실이다

allow = totalTime - allow; 
if (allow == -allow) 

: 이것은 내가 시도했지만

RepGrd.Rows[ii].Cells[0].Value = ds1.Tables[0].Rows[j][1]; 

RepGrd.Rows[ii].Cells[1].Value = ds.Tables[0].Rows[i][1]; 

RepGrd.Rows[ii].Cells[2].Value = totalTime; 
allow = TimeSpan.Parse("03:30:00"); 
allow = totalTime - allow; 
if (allow == -allow) 
{ 
    RepGrd.Rows[ii].Cells[3].Value = "00:00:00"; 
} 
else 
{ 
    //TimeSpan allow_LateSet = TimeSpan.ParseExact("03:30", "HH:mm", new CultureInfo("en-US")); 
    RepGrd.Rows[ii].Cells[3].Value = allow; 
} 
+1

그것은이다 "부정적인 시간이 00:00:00"이라면 무엇을 의미하는지 명확하지 않습니다. [mcve]를 제공하면 도움이 될 것입니다. 모든 행/셀 부분이 관련성이 있으며, 쉽게 문제를 재현 할 수 없다는 것을 매우 의심합니다. –

+0

당신은 무엇을하려고하는지 설명 할 수 있습니까? 'Cell [3]'에 있어야 할 것은 무엇입니까? 'totalTime'보다 작 으면'3 : 30', 그렇지 않다면'0 : 00'? 또는 음수 일 경우 '0 : 00'? –

답변

0

귀하의 if 문은 당신이 원하는 무엇을 설명하지 않는 if 문에서 작동하지 않는 코드입니다 !

totalTime이 허용되는 최대 값보다 큰지 알고 싶다면 나는 당신이 당신의 allow 변수를 덮어 쓰기 때문에 물론

if (totalTime > allow) 

같은, 당신은 당신의 코드에서 그것을 사용할 수 없습니다 기대, 그래서 당신은 당신이하는 것이 필요한 경우 totalTimeallow사이의 차이를 계산하기 위해 별도의 변수를 사용하는 것이 좋습니다 차이. 내가 제대로 질문을 읽고 있어요 경우 (allow0 경우에만 적 진실 것이다)

+0

도 작동하지 않습니다 –

+0

@SabriBamerhool 그것은 나쁘습니다. 그런 다음 실제 발생 상황, 실제로 예상되는 내용 및 코드 변경 방법에 대한 추가 정보를 제공해야합니다. 물론'if' 문을 변경하는 것은 효과가 없지만 이미 설명해 놓았습니다. – oerkelens

+0

@SabriBamerhool "작동하지 않음"으로 * * 당신이 의미하는 바를 설명하십시오 : 오류가 있습니까? 예상 한 결과가 아닙니다 (예상했던 것, 무엇을 보았습니까)? –

1

, 다음을 변경해야합니다 : 여기에

if (allow == -allow)` 

(허용하는 경우보다 작거나 같은 감지하는 더 간단하게 0시 0분 0초

if (allow <= TimeSpan.Zero) 

또는에 :

allow = TimeSpan.Parse("03:30:00"); 

RepGrd.Rows[ii].Cells[3].Value = totalTime > allow ? totalTime - allow : TimeSpan.Zero;