2016-07-07 12 views
-1

次のコードを使用して、今日の日にX日数を追加しています。土曜日や日曜日に来たら、日数を追加しながら、私はそれをスキップする必要があります。たとえば、今日が7/7/2016(木曜日)で5日追加している場合、通常は7/12/2016(火曜日)になります。この場合、土曜日と日曜日はスキップする必要があります。したがって、5日は2011年7月14日(木曜日)になります。ここにX日数を追加するコードがあります.XはNumDaysです。私は、行の周りにFORループを追加する必要があると思う:NewDate.setDate(NewDate.getDate()+ parseFloat(NumDays));それが座っているか、太陽に当たっているかどうかを確認し、そうであれば、それをスキップしますが、それを理解しようとするのに問題があります。誰もこれのような何かをする?日付に日数を追加するとき、土曜日か日曜日かをチェックする方法

var date = new Date(today); 
    var NewDate = new Date(date); 

    var NumDays = globals().XML.selectSingleNode("//_GetRSNumberOfDays/NumberOfDays").text; 

    NewDate.setDate(NewDate.getDate() + parseFloat(NumDays)); 

    switch(NewDate.getDay()) 
    { 
     case 6: 
      NewDate.setDate(NewDate.getDate() + 2); 
     break; 

     case 0: 
      NewDate.setDate(NewDate.getDate() + 1); 
     break; 
    } 

    var dd = NewDate.getDate(); 
    var mm = NewDate.getMonth() + 1; 
    var y = NewDate.getFullYear(); 

    var someFormattedDate = y + "/" + mm + "/" + dd 
+0

日付オブジェクトに '.getUTCDay()'を使用します:[Date.prototype.getUTCDay()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDay) –

答えて

0

これは非常に多くのことをアップして、あなたは(すなわちないがループを使用してください)スマートにそれを扱う場合は、一定の複雑で解決策を得ることができます:

基本的にあなたが%を使用することができます7を日付シリアル番号に置き、曜日を識別します。あなたは(その7%のチェックを使用することを忘れないでください)週末のスタートを得るまでX

  1. 日間の合計数は日数の必要な数を追加するために

    その後、3つの段階で進めます。それをXから引きます。必要に応じて終了します。

  2. Xから5 *(X/5)を引いた7 *(X/5)日を加算します。ここでは整数除算に頼っています。

  3. もしあれば、Xの残りの値を加えます。バテシバの答え@

1

は道より効率的ですが、日付の大規模なセット間日間の小さな番号を追加するために探して、としていない場合、これはおそらく、後に理解し、保守が容易である:

function addDays(date, howMany) { 
    var date = new Date(date); // copy off 
    var skip = [0, 6] 
    while (howMany-- > 0) { 
     date.setDate(date.getDate() + 1); // add a day 
     while (skip.indexOf(date.getDay()) > -1) { // if we're on a skip day, keep on adding 
      date.setDate(date.getDate() + 1); 
     } 
    } 
    return date 
} 
+0

実際、あなたの考えは、実行するのに時間がかかったことからもわかるように、実装するのがかなり簡単です。一を足す。 (私は 'howMany - > 0' ;-)が好きですが) – Bathsheba

関連する問題