2012-01-20 16 views
52

こんにちは私は現在、特定のイベントが起こったときに、イベントが発生した時刻を含むイベントの詳細がリストア配列に追加されるプロジェクトに取り組んでいます。2秒間の差を確認してください

メソッドが終了したら、その値をチェックする別のメソッドにリストを渡します。私がループを通過する前に、私は自分のPCの現在の時刻をチェックし、リスト配列に保存された時間と現在の時刻との間の差が5秒より大きいかどうかを確認する必要があります。

どうすればこのようになるでしょうか。 dateTime1dateTime2を想定すると、

答えて

159

DateTime値は次のとおりです。あなたのケースでは

var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds; 

、あなたは価値観の一つと他など、リスト内の時間としてDateTime.Nowを使用してdが。 dateTime1dateTime2より前の場合、結果が負になる可能性があるため、注文に注意してください。

+1

おかげで、道で、varが二重になってしまうでしょう:[TotalSeconds ](https://msdn.microsoft.com/en-us/library/system.timespan.totalseconds(v = vs.110).aspx) – Loaderon

+0

ありがとう...私はちょうど(ミリ秒)私が実際に使用したはずのミス(TotalMilliseconds)...ああ。 –

11

のDateTimeはSubtract methodとちょうどそのような機会にoverloaded - operatorを持っています

DateTime now = DateTime.UtcNow; 
TimeSpan difference = now.Subtract(otherTime); // could also write `now - otherTime` 
if (difference.TotalSeconds > 5) { ... } 
3

私は負の間隔を避けるためにこれを使用します。

var seconds = (date1< date2)? (date2- date1).TotalSeconds: (date1 - date2).TotalSeconds; 
7

このバージョンでは常に正の数(@のfreedeveloperの溶液と同じ結果)として秒差の数を返します。

var seconds = System.Math.Abs((date1 - date2).TotalSeconds); 
関連する問題