.net使用Node Time 计算两个日期的时间差 并且排除周末以及非工作时间 结果单位为分钟
时间: 2024-02-23 19:58:23 浏览: 142
要计算两个日期的时间差并排除周末和非工作时间,可以使用 NodeTime 库和 .NET 的 DateTime 类。以下是一个示例代码,可以计算两个日期之间的时间差,单位为分钟:
```csharp
using System;
using NodaTime;
public class Program
{
public static void Main()
{
// 定义工作时间段
LocalTime startTime = new LocalTime(8, 0);
LocalTime endTime = new LocalTime(17, 0);
// 定义开始和结束日期
LocalDate start = new LocalDate(2021, 1, 1);
LocalDate end = new LocalDate(2021, 1, 5);
// 计算时间差,排除周末和非工作时间
int minutes = 0;
for (LocalDate date = start; date < end; date = date.PlusDays(1))
{
if (date.DayOfWeek != IsoDayOfWeek.Saturday && date.DayOfWeek != IsoDayOfWeek.Sunday)
{
var interval = new Interval(date.At(startTime).InUtc(), date.At(endTime).InUtc());
var duration = interval.Duration;
if (duration.ToTimeSpan().TotalMinutes > 0)
{
minutes += (int)duration.ToTimeSpan().TotalMinutes;
}
}
}
Console.WriteLine($"时间差为:{minutes} 分钟");
}
}
```
在此示例中,我们首先定义了工作时间段,即每天的 8:00 到 17:00。然后我们定义了开始和结束日期,这里是 2021 年 1 月 1 日到 2021 年 1 月 5 日。接下来,我们循环遍历这段时间内的每一天,如果这一天不是周末,我们就计算这一天的工作时间。最后,将所有工作时间累加起来,得到总的时间差,单位为分钟。
阅读全文