需要时间数学指导

本文关键字:时间 | 更新日期: 2023-09-27 18:05:13

我有一个DateTime对象,它是10:00 AM这个时间表示一天中应该运行报表的时间。

我想计算从现在到上午10:00的剩余时间

我的部分困惑是现在可能是上午10点之后或上午10点之前,

我一直在玩TimeSpan,但我的结果不是很正确…我相信这很简单,但这是我已经工作了几个小时的事情之一,我需要朝正确的方向推动……

我希望时间跨度对象timeTillRun是正确的…以下是我尝试过的:

{
  DateTime scheduledRun = DateTime.Today.AddHours(_timeToStart);//_timeToStart = 10
  TimeSpan timeTillRun = DateTime.Now - scheduledRun;
}

需要时间数学指导

这将工作…但是您需要颠倒减法的顺序:

TimeSpan timeTillRun = scheduledRun - DateTime.Now;

请注意,如果当前是在10AM之后,timeTillRun将为负。您可能还需要检查当前时间是在10AM还是在10AM之后,然后向DateTime.Today添加10小时和一天以获得下一个运行时间。或者,您可以测试timeTillRun是否为阴性;如果是,就加一天(timeTillRun += new TimeSpan(1, 0, 0, 0))。

试试这个

        DateTime timeToStart = DateTime.Today.AddHours(10);
        TimeSpan timeTillRun;
        // Checking to see if current time is passed schedule run, if it is then we add a day (this is assuming this is run daily, if days are skipped like weekends for example then this would need some tweaking)
        if (DateTime.Now > timeToStart)
            timeTillRun = DateTime.Now.AddDays(1.0) - timeToStart;
        else
            timeTillRun = DateTime.Today - timeToStart;
        double totalHoursRemaining = timeTillRun.TotalHours; // get total hours remaining
        string prettyRemaining = String.Format("{0} day and {1} hours", timeTillRun.Days, timeTillRun.Hours); // can do some outputting here