2017-01-07 1 views
0

私は自分のパッケージをいつ受け取るかをユーザーに知らせるために、自分のウェブサイトにDateJSを設定しました。DateJS - Weekndsを含まない

私はこのためにDateJSスクリプトを利用しています。

納期を見積もる際に週末を含まないようにスクリプトを修正する必要があります。

次の日空気:誰かが次のいずれかを選択した場合たとえば

、今日(金曜日)、それは月曜日ではなく、土曜日 2日間空気を表示する必要があります:それは火曜日、ない日曜日 3日間を示すべき空気:月曜日ではなく、水曜日に表示する必要があります

ヘルプは大歓迎です。

<div class="panel-body"> 
    <table class="table table-striped"> 
     <thead> 
      <th>Shipping Method</th> 
      <th>Estimated Delivery</th> 
     </thead> 
     <tbody> 
      <tr> 
      <td>3 Day Select</td> 
      <td><span class="fromDate-1"></span> 
      <script> 
       var fromDate = Date.today().addDays(3); 
       if (fromDate.is().saturday() || fromDate.is().sunday()) 
       fromDate = fromDate.next().monday(); 
       $('.fromDate-1').html(fromDate.toString('dddd MMMM dS')); 
      </script> 
      </td> 
      </tr> 
      <tr> 
      <td>2nd Day Air</td> 
      <td><span class="fromDate-2"></span> 
       <script> 
       var fromDate = Date.today().addDays(2); 
       if (fromDate.is().saturday(1) || fromDate.is().sunday()) 
       fromDate = fromDate.next().monday(); 
       $('.fromDate-2').html(fromDate.toString('dddd MMMM dS')); 
       </script> 
      </td> 
      </tr> 
      <tr> 
      <td>Next Day Air</td> 
      <td> 
       <span class="fromDate-3"></span> 
       <script> 
        var fromDate = Date.today().addDays(1); 
        if (fromDate.is().saturday() || fromDate.is().sunday()) 
        fromDate = fromDate.next().monday(); 
        $('.fromDate-3').html(fromDate.toString('dddd MMMM dS')); 
       </script> 
       </td> 
      </tr> 
      </tbody> 
     </table> 
    </div> 

答えて

0

あなただけの日の間で開始または(3の場合)のように週末を見ていない、追加日後に最終日の週末を見ています。なぜ

function addDays(date, daysToAdd) { 
    for (let i=0; i<daystoAdd; i++) { 
     let nextDay = date.addDays(1); 
     if (nextDay.is().saturday()) { 
      nextDay = date.next().monday(); 
     } 
     date = nextDay; 
    } 
return date; 
} 

のような機能は、次に、あなただけのあなたのスパンごとにその関数を呼び出す必要はありません。

$('.fromDate-1').html(addDays(Date.today(), 3)); 

問題は、あなたが解決しようとしていたということですか?

0

これはまったく日付ライブラリを使用しないので、とても簡単です。

営業日のみの商品のようですので、exclude weekends in javascript date calculationの回答のように、現在のアルゴリズムではなく営業日を追加する機能が必要です。

以下は、営業日を追加するのに似ていますが、それはわずかな日数(たとえば0〜10)でのみ効率的です。

/* Add business days to a date. 
 
** @param {Date} date - date to start from 
 
** @param {number} deliveryDays - positive integer 
 
** @returns {Date} a new Date object for the delivery date 
 
*/ 
 
function getDeliveryDate(date, deliveryDays) { 
 
    // Default delivery is 3 days 
 
    deliveryDays = typeof deliveryDays == 'undefined'? 3 : deliveryDays; 
 
    // Copy date so don't modify original 
 
    var d = new Date(+date); 
 
    // Add days. If land on a Saturday or Sunday, move another day 
 
    while (deliveryDays--) { 
 
    d.setDate(d.getDate() + 1); 
 
    if (!(d.getDay() % 6)) ++deliveryDays; 
 
    } 
 
    return d; 
 
} 
 
    
 
// Some examples 
 
[ 
 
[new Date(2017,0,7),3], // Saturday start, 3 day delivery 
 
[new Date(2017,0,8),1], // Sunday start, 1 day delivery 
 
[new Date(2017,0,13),1], // Friday start, 1 day delivery 
 
[new Date(2017,0,13),3], // Friday start, 3 day delivery 
 
[new Date(2017,0,9), 3], // Monday start, 3 day delivery 
 
[new Date(2017,0,8), 7] // Sunday start, 7 day delivery 
 
].forEach(function(d) { 
 
    console.log('Ordered day : ' + d[0].toString() + 
 
       '\nDelivery days: ' + d[1] + 
 
       '\nDelivery on : ' + getDeliveryDate(d[0], d[1])); 
 
});

関連する問題