2016-01-22 77 views
-1

我有兩次基本上fromto時間,我如何找出這兩次之間的確切時間差?如何在javascript中查找兩次之間的時差

有時可能延伸到第二天還基於所選擇的時間和所述時間值可能是像從follwoing

:12:00:AM/PM(1(AM)/ 2(PM) )到:12:300:上午/下午(1(上午)/ 2(下午))

像明智它可以像時間可以是今天和兩個時間可以是第二天也。

注意:我應該只允許13小時,如果時間超過13小時,那麼會提醒用戶輸入的時間應該等於或低於13小時。

我嘗試了類似下面的內容,但它不包含少數值。請有人幫助我。

function isValidTimeBlock(fHour, fMinutes, fMeridian, toHour, toMinutes,toMeridian) { 

     // This helps to add a day if the given hour extends to next day. 
     var numberOfDaysToAdd = 1; 

     if (fMeridian == "2" && fHour < 12) fHour = fHour + 12; 
     if (fMeridian == "1" && fHour == 12) fHour = fHour - 12; 

     var hours = fHour.toString(); 
     var minutes = fMinutes.toString(); 

     if (fHour < 10) hours = "0" + fHour; 
     if (fMinutes < 10) minutes = "0" + fMinutes; 

     var fDate = new Date(); 
     fDate.setHours(hours); 
     fDate.setMinutes(minutes); 

     //check if time extends to next date 
     if (Number(fHour) == 0) fDate.setDate(fDate.getDate() + numberOfDaysToAdd); 

     if (toMeridian == "2" && toHour < 12) toHour = toHour + 12; 
     if (toMeridian == "1" && toHour == 12) toHour = toHour - 12; 

     var hours = toHour.toString(); 
     var toMinute = toMinutes.toString(); 

     if (toHour < 10) hours = "0" + toHour; 
     if (toMinutes < 10) toMinute = "0" + toMinutes; 

     var toDate = new Date(); 
     toDate.setHours(hours); 
     toDate.setMinutes(toMinute); 

     var diff; 
     //check if time extends to next date 
     if (Number(toHour) == 0 || Number(fHour) == 0) toDate.setDate(toDate.getDate() + numberOfDaysToAdd); 

      if (toDate > fDate) { 

       diff = toDate.getTime() - fDate.getTime(); 

      } 
      else { 

       diff = fDate.getTime() - toDate.getTime(); 

      } 

     //var diff = toDate.getTime() - fDate.getTime(); 

     var hours = Math.floor(diff/(1000 * 60 * 60)); 
     diff -= hours * (1000 * 60 * 60); 
     var mins = Math.floor(diff/(1000 * 60)); 
     diff -= mins * (1000 * 60); 

     var totalMinutes = (hours * 60) + Number(mins); 


     //check if the value comes in negative and if so then it is more than 13 hours and alert the user 
     // add value to toalMinutes 780 is 13 hours and add any value between 1 to any number 
     if(isNaN(totalMinutes) || totalMinutes < 0) { 
      var totalMinutes = (780) + Number(10); 
     } 

     return totalMinutes; 

    } 

EXAMPLE Value : From Time : 12:00:PM(2) and To Time : 01:30:1(AM) 

從上面的一個總的時間是13.30,但我得到的是錯誤的上述方法630分鐘810分鐘是正確的,但它並沒有給我的價值。

+1

,如果他們的JavaScript Date對象,它們之間的差異以毫秒爲單位劃分...適當地讓時:分:秒 –

+0

可能重複[如何得到JavaScript中兩個日期之間的區別?](http://stackoverflow.com/questions/41948/how-do-i-get-the-difference-between-two-dates-in-javascript ) –

+0

@JaromandaX謝謝,但我一直未能計算確切的日期對象與給定的時間,因爲有些時候它不是幫助我根據給定的時間找出它是今天的日期還是次日。 – SAR

回答

0

看看時代。這是1970年的時間,以毫秒爲單位。如果兩個日期都在相同的時間內,則可以從另一箇中減去一個。

將紀元時間轉換爲人類可讀的日期:d = new Date(epoch)。

不記得如何從日期獲得時代。
其實我懷疑你可以減去從另一個在任何情況下一個日期...

+0

是否有可能根據JavaScript中給出的時間獲取日期?就像我只給12點:上午這將有可能找到日期是今天還是第二天? – SAR

+0

不確定你的意思,但如果你做新的日期('12:00:AM日期字符串'),我想它會默認爲今天 –