2016-03-30 12 views
0

現在のコードにカウントダウンを作る:日の複数回

 while (true) 
     { 
      // Gets current time 
      DateTime farD = DateTime.Now; 

      //Gets the departure time 
      DateTime s = DateTime.Now; 
      TimeSpan ts = new TimeSpan(15, 30, 0); 
      s = s.Date + ts; 

      // Countdown to departure. 
      TimeSpan apa = s-farD; 

      //Writes time left and clears console. With a 1 second interval. 
      Console.Clear(); 
      Console.WriteLine("{0}:{1}:{2} Till färjan går",apa.Hours,apa.Minutes,apa.Seconds); 
      Thread.Sleep(1000); 

     } 

    } 
} 

}私はに向けて目指しています何

は、毎日カウントダウンに特定の時間を行うことです、フェリーの葉。 問題はフェリーに毎日50 +〜出発時刻があり、カウントダウンのこの解決策では非常に乱雑になるということです。

質問: 月/年の日付に依存しないカウントダウンをすばやく行う方法はありますか?私は、アイブ氏を知っている Ferry departure times

病気ポストあなたは時間が日と曜日の時間ごとにどのように異なるかを見ることができるようにフェリー回とのリンク(切り抜いフェリー回は後DateTime.DayOfWeekで制御されます)最終的な解決策に近づくことはできませんが、私はむしろ、その日、月、年とは無関係に、時間をカウントダウンする正しい計算から始めたいと考えています。

+0

こんにちは、これは本当にスタックオーバーフローの質問です。私は、私のコードをheres、それは何をすべきではない.. – BugFinder

答えて

0

BugFinderが言ったように、これはオーバーフローの問題を積み重ねないですが、私はあなたにヒントを与えることができます:

AllDeparturesあなたがすべての出発時刻を格納することができますリストを作成します。

そして、それを使用します。

List<DateTime> DayDepartures = AllDepartures.FindAll (
    o => o.DayOfWeek == DateTime.Now.DayOfWeek 
); 

これは、あなたが今日のすべての逸脱を得ることができる方法です。 そして、このようにあなたは今の後にある出発、時間によってソート得ることができます:

List<DateTime> NextHourDepartures = DayDepartures.FindAll (
    o => o.Hour >= DateTime.Now.Hour 
).OrderBy(o => o.Hour).ToList(); 

をそして、あなたはこのような時でソート現在の時間の次の出発、取得することができます:

List<DateTime> NextMinuteDepartures = NextHourDepartures.FindAll(
    o => o == NextHourDepartures[0] 
).FindAll (
    o => o.Minute >= DateTime.Now.Minute 
).OrderBy(o=>o.Minute).ToList(); 

をし、あなたの次の出発時刻は次のとおりです。

DateTime nextDeparture = NextMinuteDepartures [0]; 

希望は、これは役立ちますが、次回はより良いあなたの問題を表現してみてください。