当前代码:
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 +〜出发时间,而这个倒计时的解决方案变得非常混乱。
所以问题: 是否有更快的方法进行倒计时,而不依赖于月份/年份的日期? (不同的渡轮时间将在以后用DateTime.DayOfWeek控制)
发布与渡轮时间的链接,以便您可以看到每个时间和工作日的时间差异: Ferry departure times
我知道我没有接近最终的解决方案,但我宁愿从正确的计算开始,倒计时到一个时间,这与它的日期,月份或年份无关。
答案 0 :(得分: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];
希望这会有所帮助,但下次尝试更好地表达您的问题。