我有一个DateTime对象是上午10:00 此时间表示报告应在何时运行。
我想计算从现在到上午10点剩余的时间
我的困惑部分现在可能是在上午10点之后或早上10点之前,
我一直在玩TimeSpan,但我的结果并不是很正确......我确信这很简单,但这是我已经工作了几个小时的事情之一,我需要推动正确的方向...
我希望timepan对象timeTillRun正确...这是我尝试过的:
{
DateTime scheduledRun = DateTime.Today.AddHours(_timeToStart);//_timeToStart = 10
TimeSpan timeTillRun = DateTime.Now - scheduledRun;
}
答案 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