2017-10-23 8 views
1

TimeSpanで負の時間を処理する方法は?TimeSpanで負の時間を処理する

時間が負の場合は00:00:00です。これは私が試したコードですが、あなたのif文はあなたが欲しい記述する何をしませんif声明

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

では動作しません:allowが0であるかどう

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

は、これが唯一の真実であります!

totalTimeが許容される最大値を超えているかどうかを知りたい場合は、私はもちろん

if (totalTime > allow) 

のようなものを期待し、あなたのallow変数を上書きするので、あなたのコード内でそれを使用することはできませんので、私はあなたがいることが必要な場合はtotalTimeallow間の差を計算するために別の変数を使用することをお勧め差異。許可が以下の場合は検出しこれに

if (allow == -allow)` 

(:

+0

もうまくいきません –

+0

@SabriBamerhoolあまりにも悪いです。次に、実際に何が起こったか、実際に何が期待されているか、そしてコードをどのように変更したかについて、より多くの情報を提供する必要があります。もちろん、あなたの 'if'文を変更するだけではうまくいきませんが、私はすでにそれを説明しました。 – oerkelens

+0

@SabriBamerhool *あなたが*意味することを"働きません "と説明してください。あなたが期待する出力ではありません(あなたは何を期待しましたか、何を見ましたか)? –

1

私が正しくあなたの質問を読んでいる場合、あなたは(allow0ある場合にのみ、これまで真となる)次を変更する必要がありますもっと単純に午前0時00分00秒

if (allow <= TimeSpan.Zero) 

か、に:

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

RepGrd.Rows[ii].Cells[3].Value = totalTime > allow ? totalTime - allow : TimeSpan.Zero; 
関連する問題