【问题标题】:Time Math Guidance needed需要时间数学指导
【发布时间】:2011-08-12 09:49:54
【问题描述】:

我有一个 DateTime 对象,它是上午 10:00 该时间表示应该在一天中的什么时间运行报告。

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

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

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

我希望时间跨度对象 timeTillRun 正确...这是我尝试过的:

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

【问题讨论】:

    标签: c# math datetime timespan


    【解决方案1】:

    这会起作用...但是您需要颠倒减法的顺序:

    TimeSpan timeTillRun = scheduledRun - DateTime.Now;
    

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

    【讨论】:

    • 在我看到@Odnxe 之前,我看到了@cdhowie/s 的答案...我想发布我的解决方案,但我不知道如何将其添加到问题中..但基本上两者都是你建议......我非常感谢你!如果我可以发布我的解决方案,请告诉我。
    • 你可以回答你自己的问题。
    【解决方案2】:

    试试这个

            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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-01
      • 2023-01-15
      • 2021-07-07
      • 1970-01-01
      • 2016-04-18
      • 2011-06-27
      • 2013-05-22
      • 1970-01-01
      相关资源
      最近更新 更多