2011-08-12 7 views
0

私は10:00 AMのDateTimeオブジェクトを持っています この時刻は、レポートを実行する時刻を表します。時間数学のガイダンスが必要です

私は私の混乱の午前10時

部分は10の後にあるかもしれないNOWされるまで今から残り時間を計算したい:午前または午前10時前、

私がのTimeSpanで遊んで保ちますしかし、私の結果は正しいものではありません...私はこれが簡単だと確信していますが、それは私が数時間働いていたものの1つで、正しい方向にプッシュする必要があります...

timespanオブジェクトtimeTillRunが正しいようにしたい。ここに私が試したことがある:

{ 
    DateTime scheduledRun = DateTime.Today.AddHours(_timeToStart);//_timeToStart = 10 
    TimeSpan timeTillRun = DateTime.Now - scheduledRun; 
} 

答えて

1

は、これは動作します...しかし、あなたは、減算の順序逆にする必要があります。

TimeSpan timeTillRun = scheduledRun - DateTime.Now; 

注それは午前10時の後に現在だ場合、timeTillRunがマイナスになることを。現在の時刻が午前10時以降であるかどうかを確認する必要があります。と翌日からDateTime.Todayの10時間を追加して、次の実行時間を取得する必要があります。あるいは、timeTillRunが否定であるかどうかをテストすることもできます。もしそうなら、それに1日追加するだけです(timeTillRun += new TimeSpan(1, 0, 0, 0))。

+0

をお試しください基本的にお互いに提案したこと...私は非常に感謝します!ソリューションを投稿できる場合は、教えてください。 – VulcanCCIT

+0

あなた自身の質問に答えることができます。 – Odnxe

1

私はcdhowie/sの答え@見た@Odnxeを見て前に...私は私の解決策を投稿したいが、私はそれがあるquestion..butに追加する方法がわからないこの

 DateTime timeToStart = DateTime.Today.AddHours(10); 

     TimeSpan timeTillRun; 

     // Checking to see if current time is passed schedule run, if it is then we add a day (this is assuming this is run daily, if days are skipped like weekends for example then this would need some tweaking) 
     if (DateTime.Now > timeToStart) 
      timeTillRun = DateTime.Now.AddDays(1.0) - timeToStart; 
     else 
      timeTillRun = DateTime.Today - timeToStart; 

     double totalHoursRemaining = timeTillRun.TotalHours; // get total hours remaining 
     string prettyRemaining = String.Format("{0} day and {1} hours", timeTillRun.Days, timeTillRun.Hours); // can do some outputting here 
関連する問題