2015-10-15 107 views
0

有人請幫助我更新,以便能夠從陣列中檢測年份。我試圖做的目標是標籤不包括假日或週末。所以當一個假期被列出或者它的週末時,它會顯示下一個可用的日子。例如,如果今天(星期四)10/15/15,標籤將顯示「DUE 10/16/15 @ 5:00」。但如果明天(星期五)10/16/15,標籤將顯示「DUE 10/19/15 @ 5:00」。同樣的情況也適用於假期,它將成爲下一個有空的一天,而不是在週末。jQuery顯示明天日期沒有周末或年假期

這就是我所擁有的:http://jsfiddle.net/byyeh83t/1/這似乎工作,直到你把年考慮在內,因爲陣列只是按月和日進行。所以我現在需要添加一些東西來檢查一年。

有人請幫我調整一下以檢查正確的年份。 http://jsfiddle.net/byyeh83t/3/

如果15年1月18日是一個星期天,輸出應爲自15年1月19日15年1月20日的日期是MLK的節日,而是它返回15年1月19日

$(document).ready(function() { 

var natDays = [ 
    [2014, 1, 1, 'New Year'], 
    [2014, 1, 20, 'Martin Luther King'], 
    [2014, 2, 17, 'Washingtons Birthday'],  
    [2014, 5, 26, 'Memorial Day'], 
    [2014, 7, 4, 'Independence Day'], 
    [2014, 9, 1, 'Labour Day'], 
    [2014, 10, 13, 'Columbus Day'], 
    [2014, 11, 11, 'Veterans Day'], 
    [2014, 11, 27, 'Thanksgiving Day'], 
    [2014, 11, 28, 'Thanksgiving Day'], 
    [2014, 12, 25, 'Christmas'], 
    [2014, 12, 26, 'Christmas'], 
    [2015, 1, 1, 'New Year'], 
    [2015, 1, 19, 'Martin Luther King'], 
    [2015, 2, 16, 'Washingtons Birthday'],  
    [2015, 5, 25, 'Memorial Day'], 
    [2015, 7, 3, 'Independence Day'], 
    [2015, 9, 7, 'Labour Day'], 
    [2015, 10, 12, 'Columbus Day'], 
    [2015, 11, 11, 'Veterans Day'], 
    [2015, 11, 26, 'Thanksgiving Day'], 
    [2015, 11, 27, 'Thanksgiving Day'], 
    [2015, 12, 24, 'Christmas'], 
    [2015, 12, 25, 'Christmas'] 
    ]; 


// dateMin is the minimum delivery date 
var dateMin = new Date("1/18/2015"); 
dateMin.setDate(dateMin.getDate() + (dateMin.getHours() >= 14 ? 1 : 0)); 


function AddBusinessDays(curdate, weekDaysToAdd) { 
    var date = new Date(curdate.getTime()); 
    while (weekDaysToAdd > 0) { 
     date.setDate(date.getDate() + 1); 
     //check if current day is business day 
     if (noWeekendsOrHolidays(date)[0]) { 
      weekDaysToAdd--; 
     } 
    } 
    return date; 
} 


function noWeekendsOrHolidays(date) { 
    var noWeekend = $.datepicker.noWeekends(date); 
    return (noWeekend[0] ? nationalDays(date) : noWeekend); 
} 


function nationalDays(date) { 
    for (i = 0; i < natDays.length; i++) { 
     if (date.getMonth() == natDays[i][0] - 1 && date.getDate() == natDays[i][1]) { 
      return [false, natDays[i][2] + '_day']; 
     } 
    } 
    return [true, '']; 
} 


function setDeliveryDate(date) { 
    $('#delivery-date').text($.datepicker.formatDate('mm/dd/yy', date)); 
} 


setDeliveryDate(AddBusinessDays(dateMin, 1)); 

}); 

任何幫助將不勝感激。

回答

2

您應該:

  • 變化natDays[i][0](這曾經是一個月),以natDays[i][1]
  • 變化natDays[i][1](這曾經是當日)至natDays[i][2]
  • 變化natDays[i][2](這曾經是說明)natDays[i][3]
  • 將此條件添加到if中nationalDays函數中:date.getFullYear() == natDays[i][0]

像這樣:

if (date.getFullYear() == natDays[i][0] && date.getMonth() == natDays[i][1] - 1 && date.getDate() == natDays[i][2]) { 
    return [false, natDays[i][3] + '_day']; 
} 
+0

號,該行即可。在'nationalDays'函數中檢查'if block'。我寫了它應該如何。 – Diego

+0

由於某種原因今天日期2015年10月15日將去10/19/1915 – Vicki

+0

http://jsfiddle.net/byyeh83t/5/ – Vicki

相關問題