我确定这应该非常简单,但是我似乎无法使其正常工作。基本上,我想检查某个日期是在周末还是银行假期,如果确实如此,则在该日期上增加一天,然后再次检查,直到该日期不属于这两个日期之一,然后返回日期。所以我有:
private static DateTime isBankHoliday(DateTime myDate)
{
if (DateSystem.IsPublicHoliday(myDate, CountryCode.GB) || DateSystem.IsWeekend(myDate, CountryCode.GB))
{
isBankHoliday(myDate.AddDays(1));
}
else
{
return myDate;
}
return myDate;
}
我将此函数称为
var myNewDate = isBankHoliday(date);
例如,说我在2019年5月5日(星期日)通过了例行检查,然后在日期上增加了一天,因此变成了6号,然后再次检查,但是沿此日期的某个地方日期又返回并再次返回5号
很明显,我在某个地方犯了一些基本错误,但是看不到有人可以帮忙吗?
请注意,我正在使用Nagar日期库。
谢谢, C
答案 0 :(得分:3)
您在return
语句中缺少if
,并且在函数末尾您得到了错误的return
语句。应该是:
private static DateTime isBankHoliday(DateTime myDate)
{
if (DateSystem.IsPublicHoliday(myDate, CountryCode.GB) || DateSystem.IsWeekend(myDate, CountryCode.GB))
{
return isBankHoliday(myDate.AddDays(1));
}
else
{
return myDate;
}
}
答案 1 :(得分:2)
递归执行对您来说重要吗?您可以使用while循环更简单地做到这一点:
私有静态DateTime isBankHoliday(DateTime myDate)
{
而(DateSystem.IsPublicHoliday(myDate,CountryCode.GB)
|| DateSystem.IsWeekend(myDate,CountryCode.GB))
{
myDate = myDate.AddDays(1);
}
返回myDate;
}