c# - 如何从给定日期和不包括星期日的日期中找到结束日期

标签 c# asp.net

我的开始日期为 05/03/2012,持续时间为 200 天,现在我想获得不包括星期日的结束日期。所以我的结束日期应该是 05/02/2013.. 有人可以帮我吗

最佳答案

为我试试这个:

var startDate = new DateTime(2012, 5, 3);
var sundaysOverDuration = 200 / 7;
var actualDuration = 200 + sundaysOverDuration;
var newDate = startDate.AddDays(actualDuration);

老实说,我也不得不承认this link非常优雅地围绕着它如何处理在进行这些类型的计算时存在的许多异常。我不确定您是否需要那么复杂的东西,但值得让您知道。我将内联代码只是为了确保在链接断开时保留它。

public static double GetBusinessDays(DateTime startD, DateTime endD) 
{
    double calcBusinessDays =
        1 + ((endD-startD).TotalDays * 6 -
        (startD.DayOfWeek-endD.DayOfWeek) * 2) / 7;
    if ((int)startD.DayOfWeek == 0) calcBusinessDays --;
    return calcBusinessDays;
}

public static DateTime AddWorkDaysToStartDate(DateTime startD, double businessDays)
{
    int DoW = (int)startD.DayOfWeek;
    double temp = businessDays + DoW + 1;
    if (DoW != 0) temp --;
    DateTime calcendD = startD.AddDays(
    Math.Floor(temp / 6)*2-DoW + temp
        - 2* Convert.ToInt32(temp % 6 == 0)) ;
}

最后,根据你的问题,你似乎不需要处理假期,但如果你这样做,解决方案会复杂得多并且需要数据库驱动,所以请记住这一点。

关于c# - 如何从给定日期和不包括星期日的日期中找到结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12474875/

相关文章:

mysql - 大规模的 ASP.NET MySQL。推荐的?

c# - 如何使用 DDay.iCal 在 iCal 提要中设置时区?

c# - Arraylist 在从磁盘加载后无法比较对象

c# - 一次播放一个声音

asp.net - 防止将 aspnet_client 文件夹添加到 .NET 站点

php - ASP.net 与 PHP(选择什么)

c# - 从 Visual Studio 添加 Dll 到 Subversion

c# - 在 C# 中写入特定路径中的文本文件?

c# - 抽象类和 Fluent Nhibernate

c# - 替换富文本框中的所有文本