【问题标题】:Calculate time until Weekday计算直到工作日的时间
【发布时间】:2026-01-29 23:30:01
【问题描述】:

如何计算到下一个工作日白天的时间?
更具体地说,我想计算下周三 14:00 之前的分钟、小时和天数。

我该怎么做?

【问题讨论】:

  • 你尝试了什么?您知道如何获取当前日期和时间吗?减去其他值?你知道下周三怎么去吗?
  • 当前时间减去下一个工作日。
  • 你可以得到答案@*.com/questions/11/…
  • 如果今天是星期三 11:00 正确答案是什么? 3 小时 还是 7 天 3 小时Wed 15:00 的正确答案是什么?

标签: c# datetime


【解决方案1】:

想冒险回答这个问题,但是..

如何计算到下一个工作日白天的时间?

如果这句话是指星期三,你可以用DayOfWeek enumerationlike 将当前日期迭代到下星期三;

DateTime today = DateTime.Today;
while (today.DayOfWeek != DayOfWeek.Wednesday)
{
    today = today.AddDays(1);
}

因为我现在在伊斯坦布尔 - 今天是星期三 - 而且这段代码今天返回,而不是 7 天后。

更具体地说,我想计算分钟、小时和天 直到下周三14:00。

然后您可以将14小时添加到今天,并使用它获取当前本地时间(DateTime.Now)之间的差异。

today = today.AddHours(14);
TimeSpan difference = DateTime.Now - today;
Console.WriteLine(difference.ToString("d\\.hh\\:mm"));

顺便说一句,这个TimeSpan.ToString(string) overload 是在.NET Framework 4.0 版本中添加的。如果您使用 .NET 3.5 或更低版本,则可以使用 differenceDaysHoursMinutes 属性(或者可能是 TotalXXX 属性)。

【讨论】:

    【解决方案2】:

    您可以尝试使用TimeSpan

    DateTime t1 = ......;
    DateTime t2 = ......;
    TimeSpan ts = t1.Subtract(t2);
    

    TimeSpan 对象表示一个时间间隔(持续时间或 经过时间),它被测量为正数或负数 天、小时、分钟、秒和几分之一秒。时间跨度 结构也可以用来表示一天中的时间,但前提是 时间与特定日期无关。

    【讨论】:

      【解决方案3】:

      你需要的是一个TimeSpan 对象:

      TimeSpan duration = nextWednesday  - currentDate;
      

      其中nextDaynextWednesday 是两个DateTime 对象,代表您感兴趣的日期。

      例如,currentDate 可能是这个DateTime.Now。对于nextWednesday,您需要更多内容:

      var today = DateTime.Today;
      var daysUntilWednesday = ((int) DayOfWeek.Wednesday - (int) today.DayOfWeek + 7) % 7;
      var nextWednesday = today.AddDays(daysUntilWednesday);
      var ts = new TimeSpan(14,0,0);
      nextWednesday = nextWednesday.Date + ts;
      

      完成后,您可以使用TimeSpan 对象的属性来获得您想要的。

      【讨论】: