2017-04-26 21 views
1

私はjavascriptとmoment.jsの新機能です。私は週末や休日を除いて、商品の次の5つのピックアップ日をリストアップする必要のあるサイトに取り組んでいます。私はこれをオンラインで見つけた関数を使って始めます。週末をスキップするのにはうまくいきますが、休暇を取ることはできません。どんな助けもありがとう。 http://jsfiddle.net/rLjQx/940/祝日を除くモーメントJS

moment.fn.addWorkdays = function(days) { 
    var increment = days/Math.abs(days); 
    var date = this.clone().add(Math.floor(Math.abs(days)/5) * 7 * increment, 'days'); 
    var remaining = days % 5; 
    while (remaining != 0) { 
    date.add(increment, 'days'); 
    // Check for weekends and a static date 
    if (!(date.isoWeekday() === 6) && !(date.isoWeekday() === 7) && !(date.date() === 1 && date.month() === 4)) { 
     remaining -= increment; 
    } 
    } 
    return date; 
}; 

for (count = 0; count < 5; count++) { 
    var test = moment().addWorkdays(count + 1).format('dddd, MMMM Do YYYY'); 
    document.write("Pickup date : " + test); 
    document.write("<br />"); 
} 
+1

Moment.JSのための休日のプラグイン - https://gist.github.com/jrhames/5200024 :)これが役に立てば幸い – NoReceipt4Panda

答えて

0

は、ここに私のmoment-holidayプラグインを使用して迅速かつ簡単なソリューションです。 :)

function getNextWorkDays(count, format) { 
 
    if (!count) { count = 5; } 
 
    if (!format) { format = 'dddd, MMMM Do YYYY'; } 
 

 
    var days = []; 
 
    var d = moment().startOf('day'); 
 
    
 
    for (i = 0; i < count; i++) { 
 
     d.add(1, 'day'); 
 
    
 
     if (d.day() === 0 || d.day() === 6 || d.isHoliday()) { 
 
     count++; 
 
     continue; 
 
     } 
 
    
 
     days.push(moment(d).format(format)); 
 
    } 
 
    
 
    return days; 
 
} 
 

 
var days = getNextWorkDays(); 
 

 
alert("The following days are available for pickup:\n\n" + days.join("\n"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 
 
<script src="https://cdn.rawgit.com/kodie/moment-holiday/v1.2.0/moment-holiday.js"></script>

関連する問題