第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AddBusinessDays和GetBusinessDays

AddBusinessDays和GetBusinessDays

慕田峪4524236 2019-11-12 11:00:40
我需要找到2個優(yōu)雅的完整實現(xiàn)public static DateTime AddBusinessDays(this DateTime date, int days){ // code here}and public static int GetBusinessDays(this DateTime start, DateTime end){ // code here}最好是O(1)(無循環(huán))。編輯:工作日是指工作日(星期一,星期二,星期三,星期四,星期五)。沒有假期,只有周末除外。我已經(jīng)有了一些看起來可行的丑陋解決方案,但是我想知道是否有優(yōu)雅的方法可以做到這一點(diǎn)。謝謝這是我到目前為止所寫的。它在所有情況下均有效,并且也具有負(fù)面效果。仍然需要GetBusinessDays實施public static DateTime AddBusinessDays(this DateTime startDate,                                         int businessDays){    int direction = Math.Sign(businessDays);    if(direction == 1)    {        if(startDate.DayOfWeek == DayOfWeek.Saturday)        {            startDate = startDate.AddDays(2);            businessDays = businessDays - 1;        }        else if(startDate.DayOfWeek == DayOfWeek.Sunday)        {            startDate = startDate.AddDays(1);            businessDays = businessDays - 1;        }    }    else    {        if(startDate.DayOfWeek == DayOfWeek.Saturday)        {            startDate = startDate.AddDays(-1);            businessDays = businessDays + 1;        }        else if(startDate.DayOfWeek == DayOfWeek.Sunday)        {            startDate = startDate.AddDays(-2);            businessDays = businessDays + 1;        }    }    int initialDayOfWeek = (int)startDate.DayOfWeek;    int weeksBase = Math.Abs(businessDays / 5);    int addDays = Math.Abs(businessDays % 5);    if((direction == 1 && addDays + initialDayOfWeek > 5) ||         (direction == -1 && addDays >= initialDayOfWeek))    {        addDays += 2;    }    int totalDays = (weeksBase * 7) + addDays;    return startDate.AddDays(totalDays * direction);}
查看完整描述

3 回答

?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊

您的第一個功能的最新嘗試:


public static DateTime AddBusinessDays(DateTime date, int days)

{

    if (days < 0)

    {

        throw new ArgumentException("days cannot be negative", "days");

    }


    if (days == 0) return date;


    if (date.DayOfWeek == DayOfWeek.Saturday)

    {

        date = date.AddDays(2);

        days -= 1;

    }

    else if (date.DayOfWeek == DayOfWeek.Sunday)

    {

        date = date.AddDays(1);

        days -= 1;

    }


    date = date.AddDays(days / 5 * 7);

    int extraDays = days % 5;


    if ((int)date.DayOfWeek + extraDays > 5)

    {

        extraDays += 2;

    }


    return date.AddDays(extraDays);


}

第二個函數(shù)GetBusinessDays可以實現(xiàn)如下:


public static int GetBusinessDays(DateTime start, DateTime end)

{

    if (start.DayOfWeek == DayOfWeek.Saturday)

    {

        start = start.AddDays(2);

    }

    else if (start.DayOfWeek == DayOfWeek.Sunday)

    {

        start = start.AddDays(1);

    }


    if (end.DayOfWeek == DayOfWeek.Saturday)

    {

        end = end.AddDays(-1);

    }

    else if (end.DayOfWeek == DayOfWeek.Sunday)

    {

        end = end.AddDays(-2);

    }


    int diff = (int)end.Subtract(start).TotalDays;


    int result = diff / 7 * 5 + diff % 7;


    if (end.DayOfWeek < start.DayOfWeek)

    {

        return result - 2;

    }

    else{

        return result;

    }

}


查看完整回答
反對 回復(fù) 2019-11-12
  • 3 回答
  • 0 關(guān)注
  • 560 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號