当前代码:
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
我知道我还没有接近最终的解决方案,但我宁愿从正确的计算开始,对一个时间进行倒计时,这与它是哪一天,哪一月,哪一年无关。
发布于 2016-03-30 22:55:09
正如BugFinder所说,这不是堆栈溢出问题,但我可以给你一个提示:
创建一个List 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];希望这能有所帮助,但下次试着更好地表达你的问题。
https://stackoverflow.com/questions/36311038
复制相似问题