i有一个带有2个输入文本的表单(start& end),均为jQuery datapicker。使用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
这是一个可以帮助您的函数。它与SQL相同的用法。
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;
}
}
向下滚动您更新的小提琴,以查看"整洁"版本;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>');
}
这应该使您从正确的轨道开始 - 不确定您想在此处使用什么范围。
您不需要jQuery,请参阅附件JSFIDDLE
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/