需要时间数学指导
本文关键字:时间 | 更新日期: 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