我有兩組'select'元素,用戶可以輸入兩次。它看起來像這樣:Javascript - 我如何計算兩次給定時間之間的差異? (小時 - 分鐘)
Start:
[hour] [minute] [meridian]
End:
[hour] [minute] [meridian]
我試圖採取那些時間,並找出差異。所以我可以輸出:
Difference: 1.25 HRS
十進制格式,你可能知道,意思是1小時15分鐘。 還有一個複選框,用戶可以點擊它,如果選中,將會拿走30分鐘。這是我現在的代碼的樣子:
var startHours = parseInt($start.find('.times:eq(0)')[0].value);
var startMinutes = parseInt($start.find('.times:eq(1)')[0].value);
var startMeridian = $start.find('.times:eq(2)')[0].value
if (startMeridian == 'PM')
startHours += 12;
var finishHours = parseInt($finish.find('.times:eq(0)')[0].value);
var finishMinutes = parseInt($finish.find('.times:eq(1)')[0].value);
var finishMeridian = $finish.find('.times:eq(2)')[0].value
if (finishMeridian == 'PM')
finishHours += 12;
// compute the difference
var completeHours = finishHours - startHours;
var completeMinutes = finishMinutes - startMinutes;
var newTime = 0;
if (completeHours < 0 || completeMinutes < 0)
newTime = '0.0';
else
newTime = completeHours + '.' + completeMinutes;
var hadBreak = $parent.parents('tr').next('tr').find('.breakTaken')[0].checked;
if (hadBreak)
{
time = newTime.split('.');
hours = time[0];
minutes = time[1];
minutes = minutes - 30;
if (minutes < 0)
{
minutes = 60 - (minutes * 1);
hours = hours - 1;
}
newTime = (hours < 0) ? '0.0' : hours + '.' + minutes;
}
$parent.parents('tr').next('tr').find('.subtotal')[0].innerHTML = newTime;
total += parseFloat(newTime);
這是失敗的......我做錯了什麼?
它是否因錯誤而失敗或者它是否正確執行計算? – spbfox 2010-08-26 05:46:27
它不能正確執行計算。詳細說一下,在我給出的例子中,輸出結果爲「1.25 HRS」,意思是「1小時15分鐘」。我的代碼輸出「1.15」。 – dave 2010-08-26 05:49:40
當然,它會顯示.15,因爲你只需要幾分鐘而不用60分鐘就可以得到分數。 – spbfox 2010-08-26 06:34:45