【发布时间】:2012-03-06 19:42:50
【问题描述】:
我有一个关于 javascript 时间范围的问题
我有两个输入框,客户端可以给出开始日期和结束日期
下面有 3 个带有日期范围的季节,我需要计算用户输入日期范围的费用 以下季节与价格的映射
共3季,以下是日期范围:
淡季
5 月 1 日至 6 月 30 日 9 月 1 日至 12 月 14 日
费用:每天 5 美元
旺季
1 月 11 日至 4 月 30 日 7 月 1 日至 8 月 31 日
费用:每天 10 美元
旺季
-12 月 15 日 - 1 月 10 日 费用:每天 2 美元
我写了一个获取日期输入的代码
$('#calculate').click(function(){
//get the first date
da=$('#daydropdowna').val();
ma=$('#monthdropdowna').val();
ya=$('#yeardropdowna').val();
//get the secnd date
dd=$('#daydropdownd').val();
md=$('#monthdropdownd').val();
yd=$('#yeardropdownd').val();
var oneDay = 24*60*60*1000;
var ourstart= new Date(ya,ma,da);
var oursend= new Date(yd,md,dd);
/*
11th January to 30th April
1st July to 31st August
*/
var hsstart= new Date(ya,00,11);
var hsend= new Date(ya,03,11);
var hsstart1= new Date(ya,06,01);
var hsend1= new Date(ya,07,31);
/*
1st May to 30th June
1st September to 14th December
*/
var lsstart=new Date(ya,04,01);
var lsend=new Date(ya,05,30);
var lsstart1=Date(ya,08,01);
var lsend1=new Date(ya,11,14);
/*
-15th December - 10th January
*/
var psstart=new Date(ya,11,15);
var psend=new Date(ya+1,00,10);
var myDate = ourstart;
var myDate1 = oursend;
var startDate = hsstart
var endDate = hsend
//the date range within one high season
if ((startDate < myDate) && (myDate < endDate) && (startDate < myDate1) && (myDate1 < endDate)) {
alert('seasn 1 h');
var diffDays = Math.round(Math.abs((myDate1 .getTime() - myDate .getTime())/(oneDay)));
alert (diffDays);
}
//the date range within secnd high season
var startDate = hsstart1
var endDate = hsend1
if ((startDate < myDate) && (myDate < endDate) && (startDate < myDate1) && (myDate1 < endDate)) {
alert('seasn 2 h');
var diffDays = Math.round(Math.abs((myDate1 .getTime() - myDate .getTime())/(oneDay)));
alert (diffDays);
}
//the date range within first low season
var startDate = lsstart
var endDate = lsend
if ((startDate < myDate) && (myDate < endDate) && (startDate < myDate1) && (myDate1 < endDate)) {
alert('season 1 l');
var diffDays = Math.round(Math.abs((myDate1 .getTime() - myDate .getTime())/(oneDay)));
alert (diffDays);
}
//the date range within second low season
var startDate = lsstart1
var endDate = lsend1
if ((startDate < myDate) && (myDate < endDate) && (startDate < myDate1) && (myDate1 < endDate)) {
alert('season 2 l');
var diffDays = Math.round(Math.abs((myDate1 .getTime() - myDate .getTime())/(oneDay)));
alert (diffDays);
}
//peak
var startDate = psstart
var endDate = psend
if ((startDate < myDate) && (myDate < endDate) && (startDate < myDate1) && (myDate1 < endDate)) {
alert('season p');
var diffDays = Math.round(Math.abs((myDate1 .getTime() - myDate .getTime())/(oneDay)));
alert (diffDays);
}
//if not wihin a specific range cacuate for all
});
所以我需要根据用户输入计算总价,前用户输入 2012-05-05 - 2013-01-05 这需要计算涵盖日期范围的 3 个季节日期的价格。请帮我解决这个问题,谢谢...
【问题讨论】:
-
有什么问题?听起来像......“请为我做我的代码”..如果你已经尝试显示这些尝试的代码
-
是的,我做了一些代码,但我无法得到正确的结果,这仅计算匹配范围内的值,我希望这个 fr 检查 fr 许多季节。她在上面我添加了我的代码
-
那是一堆代码@Suneth,也许您可以更直接地了解这段代码的失败之处?我可能建议尝试的一件事是下载 jstestdriver 之类的东西并尝试针对这个问题进行一些测试驱动开发:)
-
那么您到底对哪一部分有问题?简要查看您的代码后,您似乎正在使用用户输入年份作为所有参考点。不会有变化吧?您能否更具体地说明不工作的部分?
-
用户输入 2012-01-05 到 2012-6-5 这需要计算 150 天,有两个不同的季节,每个季节的每日价格不同,如何提取第一季日期计数和第二季日期计数。谢谢你..
标签: javascript jquery date range