让我解释一下。我正在一个人们记录他们做某事的时间的网站上工作。问题是有人在23:00到2:00之间做某事。我现在的剧本说它是-21小时。
第二个问题是以小数计算分钟数。例如1:15是1,25。这不是一个大问题,但我的第二个问题是我可以在几分钟内得到结果吗?
对于我的主要问题,我如何设置一个条件,如果从一天到另一天计算24- $结果,否则正常计算?
这就是我现在所拥有的:
$(function() {
$("#check").click(function() {
var start = $(".preveri_ure").val();
var end = $(".preveri_ure_2").val();
s = start.split(':');
e = end.split(':');
min = e[1]-s[1];
hour_carry = 0;
if(min < 0){
min += 60;
hour_carry += 1;
}
hour = e[0]-s[0]-hour_carry;
min = ((min/60)*100).toString()
diff = hour + "," + min.substring(0,2);
$("#show").text("Task lasted for : " + diff + "hours");
});
编辑:
用户在输入字段中使用以下格式输入开始和结束时间: 开始时间:7:00 结束20:15
时差总是不到24小时。所以日期不是必需的。
答案 0 :(得分:3)
如果第一次小时数大于第二小时数,则加上第二小时24小时。
事件更好的解决方案是从每个JavaScript Date对象创建并减去。
答案 1 :(得分:1)
完全同意@Scott Marcus。如果有完整的日期而不仅仅是小时和分钟,那么比较起来会更容易。
但是从@Studio DnB的角度来看, 让我们考虑开始和结束时间属于同一天。但是,开始时间必须小于下拉选择中的结束时间。
这是代码
var tempStartDate = new Date(); // just inintialise start and end date
var tempEndtDate = new Date();
s = date1.split(':');
e = date2.split(':');
tempStartDate.setHours(s[0], s[1], 0); // set Hours and Minutes for start and end date
tempEndtDate.setHours(e[0], e[1], 0);
var startTime ;
var endTime ;
// compare to make start time less then end time always for same day log
if (tempEndtDate.getTime() > tempStartDate.getTime()){
endTime = tempEndtDate.getTime();
startTime= tempStartDate.getTime();
}
else {
endTime = tempStartDate.getTime();
startTime= tempEndtDate.getTime();
}
var difference = endTime - startTime;
var hoursDifference = Math.floor(difference/1000/60/60);
difference -= hoursDifference*1000*60*60
var minutesDifference = Math.floor(difference/1000/60);
difference -= minutesDifference*1000*60
示例在here
上答案 2 :(得分:0)
我要求用户输入日期和时间并使用Javascript UTC将特定日期时间转换为自1970年1月1日以来的秒数。 http://www.w3schools.com/jsref/jsref_utc.asp 然后计算startDate - endDate并转换为分钟。