计算工作日的时间

时间:2015-11-18 07:53:06

标签: c# datetime

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

我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

感觉喜欢冒险回答但是......

  

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

如果你的意思是星期三这个句子,你可以用DayOfWeek enumeration代替当前日期到下周三;

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或更低版本,则可以使用TotalXXX的{​​{3}},DaysHours属性(或difference属性)。

答案 1 :(得分:1)

您需要的是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对象的属性来获得所需的内容。

答案 2 :(得分:1)

您可以尝试使用TimeSpan

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

TimeSpan对象表示时间间隔(持续时间或   经过时间),以正数或负数来衡量   天,小时,分钟,秒和分数秒。 TimeSpan   结构也可用于表示一天中的时间,但仅限于   时间与特定日期无关。