2017-09-14 55 views
0

我現在面臨的問題與每一個不包括JavaScript.For我的業務需求我想排除日期對象週五,週六和週日3天週末日期week.What我需要在這裏星期五的值應該顯示爲星期一,星期六,星期二和星期日,星期三。我能夠做到這一點。如何排除日期對象週末在Javascript

即我面對這裏的問題是,當我們運行上面的例子所涉及的[0]的值應爲21-SEP-2017但我發現了20-SEP-2017和剩餘的數組值不應該改變。所以,請你幫我解決這個問題,

var a = ["21-SEP-2017", "22-SEP-2017", "23-SEP-2017", "24-SEP-2017", "25-SEP-2017"]; 
for (i = 0; i < a.length; i++) { 
    var startDate = a[i]; 
    startDate = new Date(startDate.replace(/-/g, "/")); 

    var endDate = "", 
     noOfDaysToAdd = 1; 
    var count = 0; 
    endDate = new Date(startDate.setDate(startDate.getDate())); 

    if (startDate.getDay() != 0 && startDate.getDay() != 5 && startDate.getDay() != 6) { 
    endDate = new Date(startDate.setDate(startDate.getDate() + i - 1)); 
    } else { 
    startDate.setDate(startDate.getDate() + 3) 
    endDate = new Date(startDate.setDate(startDate.getDate())); 
    } 
    console.log(endDate); //You can format this date as per your requirement 
} 
+2

酷。你有什麼嘗試?你卡在哪裏?你是否熟悉像[moment.js](http://momentjs.com/)這樣的圖書館? –

+0

這是我的數組var a = [「21-SEP-2017」,「22-SEP-2017」,「23-SEP-2017」,「24-SEP-2017」,「25-SEP-2017」] I要輸出日期爲21-SEP-2017,25-SEP-2017,26-SEP-2017,27-SEP-2017,28-SEP-2017 –

回答

0

你的代碼似乎沒有結束:變量noOfDaysToAdd,並且從未使用過count,如果他們成功了,他們將在循環的每次迭代中進行設置,哪些不能成爲目的。

您的輸出顯示9月20日是因爲您沒有輸出日期的字符串化版本,而是日期對象本身,然後console.log會將日期顯示爲UTC日期(注意時間部分與時區差異相匹配) 。請使用.toString()或其他方式將日期轉換爲本地化的字符串。

這裏是你如何能做到這一點:

function toDate(s) { 
 
    return new Date(s.replace(/-/g, '/')); 
 
} 
 

 
function toStr(dt) { 
 
    var months = ["JAN","FEB","MAR","APR","MAY","JUN", 
 
        "JUL","AUG","SEP","OCT","NOV","DEC"]; 
 
    return [('0'+dt.getDate()).substr(-2), months[dt.getMonth()], dt.getFullYear()] 
 
      .join('-'); 
 
} 
 

 
var a = ["21-SEP-2017", "22-SEP-2017", "23-SEP-2017", "24-SEP-2017", "25-SEP-2017"], 
 
    add = 0; 
 
var result = a.map(toDate).map(dt => { 
 
    dt.setDate(dt.getDate()+add); 
 
    var move = [0, 6, 5].indexOf(dt.getDay()) + 1; 
 
    if (move) { 
 
     add += move; 
 
     dt.setDate(dt.getDate()+move); 
 
    } 
 
    return dt; 
 
}).map(toStr); 
 

 
console.log(result);

+0

如果我添加一個日期我輸入 [「21-SEP- 2017" 年, 「22-SEP-2017」, 「23-SEP-2017」, 「24-SEP-2017」, 「25-SEP-2017」, 「26-SEP-2017」] 這是輸出I」米得到 [ 「21-SEP-2017」, 「25-SEP-2017」, 「26-SEP-2017」, 「27-SEP-2017」, 「28-SEP-2017」,「02-OCT-2017 「] 我們需要解決的問題是沒有日期是在同一日期,所有日期都是按順序排列的,我們需要排除週末。 –

+0

我不明白:你希望29-SEP-2017在輸出中,但你也想*「......從每週的星期五,星期六和星期天的日期對象中排除3天」*。但2017年9月29日是星期五。你看到矛盾了嗎?第一天可以接受的是下個星期一,即02-OCT-2017 ... – trincot

+0

對不起。它工作正常 –

相關問題