2016-08-25 81 views
1

我想使用javaScript生成下一個工作日。Javascript:第二天獲取,跳過週末

這是我的代碼截至目前

var today = new Date(); 
    today.setDate(today.getDate()); 
    var tdd = today.getDate(); 
    var tmm = today.getMonth()+1; 
    var tyyyy = today.getYear(); 

    var date = new Date(); 

    date.setDate(date.getDate()+3); 

問題是,在星期五它,而我希望它是週一

+2

看看今天('today.getDay()'),如果它是5(星期五)加3,如果它是6(星期六)加2,否則加1. – RobG

+0

如果if語句表示'date'星期六的星期幾,再加兩天。添加另一個if語句來檢查星期天。 – jedifans

回答

1

這將選擇下一個工作日週六返回的日期。

var today = new Date(2016, 7, 26); // Friday 
 
alert(today); 
 
today.setDate(today.getDate()+1); // tomorrow 
 
while (today.getDay() == 6 || today.getDay() == 0) today.setDate(today.getDate() + 1); 
 
alert(today); 
 

 
// or without a loop: 
 

 
function getNextWork(d) { 
 
    d.setDate(d.getDate()+1); // tomorrow 
 
    if (d.getDay()==0) d.setDate(d.getDate()+1); 
 
    else if (d.getDay()==6) d.setDate(d.getDate()+2); 
 
    return d; 
 
} 
 
today = getNextWork(new Date(2016, 7, 26)); // Friday 
 
alert(today); 
 
today = getNextWork(new Date(2016, 7, 29)); // Monday 
 
alert(today); 
 

 
// Implementing Rob's comment 
 

 
function getNextWork1(d) { 
 
    var day = d.getDay(),add=1; 
 
    if (day===5) add=3; 
 
    else if (day===6) add=2; 
 
    d.setDate(d.getDate()+add); 
 
    return d; 
 
} 
 
today = getNextWork1(new Date(2016, 7, 26)); // Friday 
 
alert(today); 
 
today = getNextWork1(new Date(2016, 7, 29)); // Monday 
 
alert(today);

+0

這是因爲我需要這種格式的日期 – werlox

+0

'var tdd = today.getDate(); var tmm = today.getMonth()+ 1; var tyyyy = today.getYear();'不是你問題的一部分,我認爲 – mplungjan

+0

是的,事實並非如此。你是解決方案的作品。謝謝(: – werlox

0

您可以在時間加1天,直到你在一天,是不是星期六或星期日:

function getNextBusinessDay(date) { 
 
    // Copy date so don't affect original 
 
    date = new Date(+date); 
 
    // Add days until get not Sat or Sun 
 
    do { 
 
    date.setDate(date.getDate() + 1); 
 
    } while (!(date.getDay() % 6)) 
 
    return date; 
 
} 
 

 
// today, Friday 26 Aug 2016 
 
[new Date(), new Date(2016,7,26)].forEach(function(d) { 
 
    console.log(d.toLocaleString() + ' : ' + getNextBusinessDay(d).toLocaleString()); 
 
});

+0

其實你的評論似乎更好的主意:) – mplungjan

0

檢查這出:https://jsfiddle.net/e9a4066r/

function get_next_weekday (date) { 
    var tomorrow = new Date(date.setDate(date.getDate() + 1)) 
    return tomorrow.getDay() % 6 
     ? tomorrow 
     : get_next_weekday(tomorrow) 
} 
+0

這是一個美麗的方式來做到這一點!代碼只是有一些問題。舉一個例子:如果我們使用2016年12月31日的日期跳轉到02年2月,而不是2017年1月2日 - 需要處理幾個月和幾年的界限。 –

0

接受的答案將跳過一個天一個地,它回答了有機磷農藥的問題,但任何人都希望增加一個變量的天數,同時還跳過週末下面的功能可能會有所幫助:

function addWorkDays(date, days) { 
    while (days > 0) { 
    date.setDate(date.getDate() + 1); 
    if (date.getDay() != 0 && date.getDay() != 6) { 
     days -= 1; 
    } 
    }   
    return date; 
}