倒计时一天多次

时间:2016-03-30 13:57:46

标签: c#

当前代码:

        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

我知道我没有接近最终的解决方案,但我宁愿从正确的计算开始,倒计时到一个时间,这与它的日期,月份或年份无关。

1 个答案:

答案 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];

希望这会有所帮助,但下次尝试更好地表达您的问题。