2015-02-08 117 views
0

我目前正在为Ruby on Rails项目开发一些JavaScript,但我的知识在Javascript世界中很轻。Javascript - 1天日历的数学函数

我们有一个日历中可供选择的日期,最好我们要这样来计算第1天:每天

租车价格=£100

如何,我们希望它的工作:

录用1天(即,拾取上午15年8月2日 - 脱落晚上15年8月2日)=£100

在JavaScript是计算AA一天在24小时期间的时刻(即08/02/15 - 09/02/15),我们不想要。

代码:

var hire_from = null; 
    var hire_to = null; 

    var setPrice = function() { 
     var oneDay = 24*60*60*1000; 
     if (hire_from && hire_to) { 
      var diffDays = Math.round(Math.abs((hire_from - hire_to)/(oneDay))); 
      var price = diffDays*$("#enquiry_price").val(); 
      $("span#weekly_price").html("£ "+price.toFixed(0)) 
      var fee = price*$("#enquiry_discount").val() 
      $("span#commission").html(fee.toFixed(0)); 
     } 
    } 

我如何更改JavaScript来的工作如前所述?

谢谢你的时间。

+0

不管你写不给ü@MukeshAgarwal你是什么意思的答案 – 2015-02-08 12:17:59

+0

?谢谢 – RubyMax 2015-02-08 12:23:53

+0

请提供更多示例来了解需要什么。如果在23点59分拍摄并在00点01分返回,那么它算作一两天? – Hurelu 2015-02-08 13:16:16

回答

0

的问题是配制的方式,2个可能的公式可能:

答:第一分钟计数如一日和第二计费一天24小时+ 1分钟开始。这与所提供的代码更接近。 (四舍五入即小数天)

oneDay = 24*60*60*1000; 
days = Math.ceil((hire_to - hire_from)/oneDay); 

B:天的数目是在日历天1的差,而不管时间。根据澄清。 (即铟酸,过时+ 1)

//convert a ms time stamp to a local time day stamp 
//ie. whole days since long ago 
function localDayStamp(ms) { 
    var oneDay = 24*60*60*1000; 
    date = new Date(); 

    //remove all fractional miliseconds from the local day stamp 
    date.setTime(ms); 
    date.setHours(0); 
    date.setMinutes(0); 
    date.setSeconds(0); 
    date.setMilliseconds(0); 

    return Math.ceil(date.getTime()/oneDay); 
} 

// get the days 
days = 1 + localDayStamp(hire_to) - localDayStamp(hire_from); 
+0

雇用时间不会太多,我可能会过分强调这一点。这是几天,所以如果您选择08/02/15的From日历和08/02/15的To日历,则这将被归类为完整的一天预订。如果发件人的日期是08/02/15,并且日历日​​期是09/02/15,那么这将被归类为2天预订(即价格* 2) – RubyMax 2015-02-08 14:18:53