我的收費系統中的收費計算不正確。日期範圍內的價格計算問題
下面是代碼,如果你運行的日期範圍,而不是給1天價2天,然後說1天的另一個價格它不。下面是代碼的示例:)
$(function() {
function change_charges() {
var checkin_mon = Number($("#checkindate_Month_ID").val());
var checkin_day = Number($("#checkindate_Day_ID").val());
var checkin_year = Number($("#checkindate_Year_ID").val());
var checkout_mon = Number($("#checkoutdate_Month_ID").val());
var checkout_day = Number($("#checkoutdate_Day_ID").val());
var checkout_year = Number($("#checkoutdate_Year_ID").val());
var checkin_date = new Date();
checkin_date.setFullYear(checkin_year, checkin_mon, checkin_day);
var checkout_date = new Date();
checkout_date.setFullYear(checkout_year, checkout_mon, checkout_day);
var one_day = 1000 * 60 * 60 * 24
//Calculate difference btw the two dates, and convert to days
var stay = Math.ceil((checkout_date.getTime() - checkin_date.getTime())/(one_day));
var room_type = $("#room_type").val();
var charges = 0;
var n_charges = 0;
var st_date = new Date();
var end_date = new Date();
var mon_stay = 0;
var rem_stay = 0;
if (room_type == "Villa") {
st_date.setFullYear(checkin_year, 4, 1);
end_date.setFullYear(checkin_year, 9, 31);
if (checkin_date >= st_date && checkin_date <= end_date) {
charges = 1995;
n_charges = 2995;
if (checkout_date > end_date) mon_stay = Math.ceil((end_date.getTime() - checkin_date.getTime())/(one_day));
}
st_date.setFullYear(checkin_year, 10, 1);
end_date.setFullYear(checkin_year, 11, 15);
if (checkin_date >= st_date && checkin_date <= end_date) {
charges = 2995;
n_charges = 2995;
if (checkout_date > end_date) mon_stay = Math.ceil((end_date.getTime() - checkin_date.getTime())/(one_day));
}
st_date.setFullYear(checkin_year, 11, 16);
end_date.setFullYear(checkin_year, 11, 31);
if (checkin_date >= st_date && checkin_date <= end_date) {
charges = 5900;
n_charges = 5900;
if (checkout_date > end_date) mon_stay = Math.ceil((end_date.getTime() - checkin_date.getTime())/(one_day));
}
st_date.setFullYear(checkin_year, 0, 1);
end_date.setFullYear(checkin_year, 0, 15);
if (checkin_date >= st_date && checkin_date <= end_date) {
charges = 5900;
n_charges = 3900;
if (checkout_date > end_date) mon_stay = Math.ceil((end_date.getTime() - checkin_date.getTime())/(one_day));
}
st_date.setFullYear(2013, 0, 16);
end_date.setFullYear(2013, 3, 30);
if (checkin_date >= st_date && checkin_date <= end_date) {
charges = 3900;
n_charges = 2223;
if (checkout_date > end_date) mon_stay = Math.ceil((end_date.getTime() - checkin_date.getTime())/(one_day));
}
如果(逗留> 1){
if(mon_stay == 0)mon_stay = 1;
if(mon_stay != 0){
rem_stay = stay - mon_stay;
charges = (mon_stay*charges) + (rem_stay*n_charges);
}
else
charges*=stay;
}
變種今天=新的Date(;
如果(CHECKIN_DATE <今天|| CHECKOUT_DATE <今天|| CHECKOUT_DATE < CHECKIN_DATE){
charges = 0;
}
$( 「#tot_charges」)HTML(charges.toFixed(2))。
}
$( 「#checkindate_Month_ID」)發生變化。(函數(){
change_charges();
});
$( 「#checkindate_Day_ID」)發生變化(函數(){
change_charges();
})。
$( 「#checkindate_Year_ID」)發生變化(函數(){
change_charges();
})。
$( 「#checkoutdate_Month_ID」)發生變化(函數(){
change_charges();
})。
$( 「#checkoutdate_Day_ID」)發生變化(函數(){
change_charges();
})。
$( 「#checkoutdate_Year_ID」)發生變化(函數(){
change_charges();
})。
$(「#room_type」)。改變(功能(){
change_charges();
});
我想你需要澄清你的問題。你的問題被描述爲「而不是以1天的價格給2天,然後說1天的價格不合理」。它應該總是以一個價格提供兩天,然後一個在另一個?現在它在做什麼呢?這對我來說並不明顯。 –
1)28/10 - 31/10 =住3晚 - 應該是3 x 1995 = 5985 系統計算 - 7985 – user1776951
這是一個例子,它不計算這些日期的價格 - 而不是3天@ 1995年 – user1776951