2016-03-30 25 views
0

Güncel kod geri sayım yapma:günün birden çok kez

 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); 

     } 

    } 
} 

} Ben doğru hedefliyorum Ne

, her gün bir geri sayım belirli bir kere yapmaktır, feribot yaprakları. Sorun şu ki feribot, her gün 50 + ~ kalkış saatleri var Ve bu geri dönüş için bu çözüm ile çok dağınık olur.

Sorularınız: Ayın/yılın hangi tarihine bağlı olmayan bir geri sayım yapmanın daha hızlı bir yolu var mı? Ben Ive biliyorum Ferry departure times

:

Hasta yazı size kez gün ve hafta içi zamanına başına nasıl farklılık görebilirsiniz feribot saatleri ile bir bağlantı (Diffrent feribot saatleri daha sonra DateTime.DayOfWeek ile kontrol edilecektir) Nihai bir çözüme yaklaşmamak, ancak bir güne geri sayım yapmak için doğru hesaplama ile başlamak istiyorum, o gün, ay veya yıldan bağımsızdır. BugFinder söylediği gibi

+0

Merhaba, bu gerçekten bir yığın taşma sorusu değil. Yaparız, benim kodlarımı, ne yapması gerektiğini değil. – BugFinder

cevap

0

, bu taşma soruyu yığını değildir, ancak sana bir ipucu verebilir:

AllDepartures tüm kalkışlar zaman saklayabilir bir Liste Oluştur.

Ve kullanmak:

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

Bu bugün tüm kalkış böyle ulaşır. Ve böyle saate göre sıralanmış şimdi peşinde sapmalar alabilirsiniz:

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

Ve böyle zamanına göre sıralanmış geçerli saatte sonraki kalkışları, alabilirsiniz:

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

ve o zaman yanındaki kalkış zamanı:

DateTime nextDeparture = NextMinuteDepartures [0]; 

Umut bu yardımcı olur, ama bir dahaki sefere daha iyi sorununuzu temsil çalışın.

İlgili konular