我目前正在为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更改为如前所述?
感谢您的时间。
答案 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);