C# c语言中的日期计算#
在我的应用程序(c#)中,我需要将C# c语言中的日期计算#,c#,datetime,C#,Datetime,在我的应用程序(c#)中,我需要将n天添加到今天的日期。我知道我可以使用DateTime.AddDays(n)方法,这个方法很好用。但在我的情况下,我只想添加工作日(或者只添加“周一”和“周五”或任何其他设置) 可能存在任何默认方法来计算此类逻辑 测试数据: 日期:今天(2014年6月24日)。 添加天数:10 天数类型:工作日(Mn Fr) 回答:2014年7月8日您可以使用LINQ: DayOfWeek[] weekEnd = { DayOfWeek.Saturday, DayOfWeek.
n
天添加到今天的日期。我知道我可以使用DateTime.AddDays(n)
方法,这个方法很好用。但在我的情况下,我只想添加工作日(或者只添加“周一”和“周五”或任何其他设置)
可能存在任何默认方法来计算此类逻辑
测试数据:
日期:今天(2014年6月24日)。添加天数:10
天数类型:工作日(Mn Fr)
回答:2014年7月8日您可以使用LINQ:
DayOfWeek[] weekEnd = { DayOfWeek.Saturday, DayOfWeek.Sunday };
DateTime end = Enumerable.Range(0, int.MaxValue)
.Select(i => DateTime.Today.AddDays(i))
.Where(d => !weekEnd.Contains(d.DayOfWeek))
.Take(10)
.Last();
但是,我假设它返回07/07,因为它包括今天。我不知道这是否合意。如果您不想包括今天,请将
范围(0,int.MaxValue)
更改为范围(1,int.MaxValue)
我会这样做:
public static DateTime AddBusinessDays(this DateTime source, int daysToAdd, params DayOfWeek[] workdays)
{
if (daysToAdd <= 0)
return source;
var current = source;
while (daysToAdd > 0)
{
current = current.AddDays(1);
if (workdays.Contains(current.DayOfWeek))
daysToAdd--;
}
return current;
}
public static DateTime AddBusinessDays(此DateTime源,int daysToAdd,params DayOfWeek[]workdays)
{
如果(daystoadd0)
{
当前=当前添加天数(1);
if(工作日包含(当前工作日)
daysToAdd--;
}
回流;
}
我会创建一个天数的枚举,然后当您在要添加的天数上迭代时,根据您的枚举检查它没有内置方法。关于如何计算工作日,有几种答案。@DStanley,谢谢您的评论,但是自定义天数集(Fr Sun)呢?也许问题没有重复?你问是否有“默认方法”-答案是否-可能有第三方库,或者你可以滚动你自己的有几个答案的库。