需要时间数学指导

时间:2011-08-12 01:20:30

标签: c# math datetime timespan

我有一个DateTime对象是上午10:00 此时间表示报告应在何时运行。

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

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

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

我希望timepan对象timeTillRun正确...这是我尝试过的:

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

2 个答案:

答案 0 :(得分:1)

这将有效...但你需要颠倒减法的顺序:

TimeSpan timeTillRun = scheduledRun - DateTime.Now;

请注意,如果它目前在上午10点之后,timeTillRun将为负数。您可能还需要检查当前时间是否在上午10点或之后,然后将和一天添加10小时到DateTime.Today以获得下一个运行时间。或者,您可以测试timeTillRun是否为负数;如果是这样,只需添加一天(timeTillRun += new TimeSpan(1, 0, 0, 0))。

答案 1 :(得分:1)

试试这个

        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