2014-03-06 4 views
0

jquery datapicker로 두 입력 텍스트 (시작 & 끝)가있는 양식이 있습니다. jQuery로 나는 다른 속도 그래서jQuery 날짜 범위 사이의 일 수

For ex: 

     start-date end-date  rate 

Range A: 01/01/2012 - 06/30/2012 --> 5% 
Range B: 07/01/2012 - 12/31/2012 --> 10% 
Range C: 01/01/2013 - 06/30/2013 --> 15% 
Range D: 07/01/2013 - 12/31/2013 --> 20% 
and so on... 

So if date inserted in "start" is = 08/15/2012 
and the date inserted in "end" is = 11/20/2013 

The number of days per range are: 
Range A: 0 
Range B: 138 with a rate 10% 
Range C: 181 with a rate 15% 
Range D: 143 with a rate 20% 

에게 적용 기간 (매년 두 학기)의 미리 정의 된 범위에 빠지는 일 수를 얻을 수 트링하고 대답은, 같은 것을 수행하는 방법 :

를 여기
(Math.min(end,rangeX_end-date) - Math.max(start,rangeX_start-date))*rangeX_rate 

답변

1

여기에 업데이트 된 바이올린에

function datediff(fromDate,toDate,interval) { 
      var second=1000, minute=second*60, hour=minute*60, day=hour*24, week=day*7; 
      fromDate = new Date(fromDate); 
      toDate = new Date(toDate); 
      var timediff = toDate - fromDate; 
      if (isNaN(timediff)) return NaN; 
      switch (interval) { 
       case "years": return toDate.getFullYear() - fromDate.getFullYear(); 
       case "months": return ( 
        (toDate.getFullYear() * 12 + toDate.getMonth()) 
        - 
        (fromDate.getFullYear() * 12 + fromDate.getMonth()) 
       ); 
       case "weeks" : return Math.floor(timediff/week); 
       case "days" : return Math.floor(timediff/day); 
       case "hours" : return Math.floor(timediff/hour); 
       case "minutes": return Math.floor(timediff/minute); 
       case "seconds": return Math.floor(timediff/second); 
       default: return undefined; 
      } 
     } 

스크롤 아래로 .. SQL 등 당신이 .. 그 같은 사용에 도움이되는 기능입니다 "깔끔한"버전을보기 위해; http://jsfiddle.net/uUqrT/5/

$("#calc").click(function() 
{ 
    addDaysRow($('#from').val(), $('#to').val()); 
}); 

function addDaysRow(fromDate, toDate) { 
    var rangeAstart = new Date('01/01/2012'); 
    var rangeAend = new Date('06/30/2012'); 
    var rangeBstart = new Date('07/01/2012'); 
    var rangeBend = new Date('12/31/2012'); 
    var rangeCstart = new Date('01/01/2013'); 
    var rangeCend = new Date('06/30/2013'); 
    var rangeDstart = new Date('07/01/2013'); 
    var rangeDend = new Date('12/31/2013'); 

    var diff = datediff(fromDate, toDate, "days"); 

    $('#record > tbody:last').append('<tr><td>' + diff + '</td><td>' + diff + '</td><td>' +diff + '</td><td>' + diff + '</td><td>' + diff + '</td><td>' + diff + '</td><td>' + diff + '</td></tr>'); 
} 

이 바른 길에 당신을 시작해야 - 당신이 여기의 범위와 수행 할 작업을 확실하지.

+0

이 DATEDIFF (/ 2,010 '10/10 ', '20// 2010 (12)', '일'부착 jsFiddle을 참조하십시오, 그것을 위해 jQuery를 필요가 없습니다); –

+0

이 함수는 두 날짜 사이의 일 수를 계산합니다. 감사합니다. 그러나 모든 범위의 골짜기 수를 세는 방법 ?? 다음과 같은 것 : 범위 A에 속하는 일수, 범위 B보다 범위 C보다 크다는 등의 수를 반환합니다. 50 개 이하의 범위가 있습니다. 50 개를 만들어야합니까 ?? 거기에 루프를 사용할 수있는 방법이 있습니까 ?? 고마워요 – fasenderos

+0

예, 여기에 며칠 동안 뭐하고 있니? JSFiddle에서 모형을 만들 수 있으며 원하는 기능과 장소를 말해 줄 수 있습니까? 그러면 코드를 채울 것입니다. @fasenderos –

1

당신은

var start = new Date('2011-04-11'); 
var end = new Date('2012-04-11'); 
var diff = Math.round((end- start)/(1000*60*60*24)); 

http://jsfiddle.net/4t7DU/