1

ランタイム変数が今と今から 1 分以内にあるかどうかを比較しようとしています。コードは次のとおりです。

if (RunTime.ToUniversalTime() >= now.ToUniversalTime() && 
    RunTime.ToUniversalTime() < now.AddMinutes(1).ToUniversalTime())
{
    //Do Stuff 
}

ただし、これは期待する 1 分前に true と評価されます。たとえば、ランタイムが 9:30 の場合、9:30 から 9:31 ではなく、9:29 から 9:30 まで true と評価されます。ここで何が欠けていますか?私がコードを理解する方法は、ランタイムが現在以上で、現在プラス 1 分未満の場合に true と評価されるということです。

4

4 に答える 4

2

を使用しDateTime.Nowているため、正確に同時に着陸することは決してありません。次の 2 つのケースを考えてみましょう。

Case 1 (what you're experiencing)
now:     9:29:01
runtime: 9:30:00
now+1:   9:30:01

Case 2 (what you want but doesn't work)
now:     9:30:01
runtime: 9:30:00
now+1:   9:31:01

now 変数を明示的に設定して、何が起こるかの論理テーブルをいくつか作成してみてください。作成するルールをよりよく理解できます。

于 2016-04-21T17:11:42.390 に答える
0

日時の比較を行うときは、TimeSpan 型を使用するのが好きです。

TimeSpan timeSpan = Runtime.ToUniversalTime().Subtract(now.ToUniversalTime());

if (timeSpan > 0 && timeSpan <= 1)
{
   //Code here
}
于 2016-04-21T17:28:13.247 に答える