Javascript - 1天日历的数学函数

时间:2015-02-08 12:06:06

标签: javascript ruby-on-rails

我目前正在为Ruby on Rails项目开发一些Javascript,但我的知识在Javascript世界中很明显。

我们有一个日历,您可以选择日期,理想情况下我们希望1天计算如下:

每天租车价格= 100英镑

我们希望它如何运作:

租用1天(即早上08/02/15接送 - 2015年2月8日晚上下车)= 100英镑

目前Javascript正在计算一天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更改为如前所述?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

问题的制定方式,可能有两种可能的公式:

A:第一分钟计为一天,第二个计费日开始于24小时+1分钟。这更接近于呈现的代码。 (即分数天数四舍五入)

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

B 天数是天数+1的差异,无论时间如何。符合澄清。 (即inDate-outDate + 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);