【发布时间】:2020-07-16 09:44:33
【问题描述】:
我使用nager.date 来知道一天是假日还是周末(周六和周日)。
我需要在 5 个工作日后提取日期(从今天或任何其他日期开始)。
DateTime date1 = new DateTime(2019, 12, 23);
int i = 0;
while ( i < 5)
{
if (DateSystem.IsPublicHoliday(date1, CountryCode.IT) || DateSystem.IsWeekend(date1, CountryCode.IT))
{
date1 = date1.AddDays(1);
}
else
{
date1= date1.AddDays(1);
i++;
}
}
这段代码的问题是,如果最后一个 else 发生,它会加我 1 天,但没有做任何其他检查。
例如:
如果开始日期是 2020 年 7 月 13 日,则结果将在 2020 年 7 月 18 日结束,如您所见,是星期六。
如何修改此代码以实现我的需要?
【问题讨论】:
-
创建一个像这样的 bool 方法: bool EveryoneAtHome(Datetime myDateTime) 如果 IsPublicHoliday 或 IsWeekend 返回 true。然后你可以在你的 while 循环中调用这个方法,如果为 false 则添加 1 天
-
我无法使用方法或函数,因为我在“UiPath”中使用此代码,并且不允许创建这些东西。只有原始代码。
-
使用 LINQ:
public IEnumerable<DateTime> WorkingDaysFrom(DateTime dt) { while (true) { if (...) yield return dt; dt = dt.AddDays(1); } }然后var next5 = WorkingDaysFrom(...).Take(5).ToList();