2017-04-21 38 views
-1

沒有給予正確的我想在分鐘再予2日期間獲得differnce但我從很多方法的嘗試,但沒有得到真正的區別日期differnce在javascript

我試圖

var punchIn = "Fri Apr 21 2017 10:57:11 GMT+0530 (IST)"; 

var punchOut ="Fri Apr 21 2017 13:19:50 GMT+0530 (IST)"; 



var startDate = new Date(punchIn); 
var endDate = new Date(punchOut); 
var workingHours = (endDate.getTime() - startDate.getTime())/(1000 * 60 * 60); 

(結束日期。的getTime() - startDate.getTime())= 8559000轉換成 小時它給 2.3775

但應2小時22分..

+0

如果您希望分鐘乘以昏迷後的分鐘數60,則您的小時數爲十進制。如此:0.3775h * 60將得到22.65分鐘的結果。 –

+2

這實在只是一個簡單的數學問題。 – PHPglue

+1

拿起鉛筆和紙,算出數學...然後編碼 – charlietfl

回答

0

var workingHours = (endDate.getTime() - startDate.getTime())/(1000 * 60);這完全將其轉換爲分鐘計算的額外秒,但是當你做另一個* 60它把時間放在幾個小時內。但有一個轉折點。那些0.3775是那22分鐘。只是因爲它轉換爲小時,甚至可以達到0.9,但這些是分鐘,只是在小數點後面轉換。因爲沒有時間元素。

也許你可以通過var workingHours = new Date ((endDate.getTime() - startDate.getTime())/(1000 * 60 * 60));這樣的東西或其他東西創建另一個日期對象,但多數民衆贊成你可以弄清楚。

編輯:

var punchIn = "Fri Apr 21 2017 10:57:11 GMT+0530 (IST)"; 
 
var punchOut ="Fri Apr 21 2017 13:19:50 GMT+0530 (IST)"; 
 
\t \t \t 
 
var startDate = new Date(punchIn); 
 
var endDate = new Date(punchOut); 
 
\t \t \t 
 
var millis = (endDate.getTime() - startDate.getTime()); 
 

 
var second = (millis/1000) % 60; 
 
var minute = Math.floor(millis/(1000 * 60)) % 60; 
 
var hour = Math.floor(millis/(1000 * 60 * 60)) % 24; 
 
\t \t \t 
 
var time = hour + ":" + minute + ":" + second; 
 
\t \t \t 
 
document.getElementById("time").innerHTML += time;
<div id="time"></div>

-1

10時57分11秒±2小時22分= 13點19分十一秒不13點十九分50秒

另外2.3775小時爲120分鐘+(60 * 0.3775)=分鐘22.65分鐘。

所以計算是正確的,你錯過了0.65分鐘(39秒)

您可以(8559000/1000) mod 60

var total = (endDate.getTime() - startDate.getTime())/1000; 
var seconds = total % 60; 
total = total - seconds; // Floor to the minutes. 

Now the total contains exactly 2:22 minutes (in seconds) 
+1

這不過是一個評論,並沒有幫助OP得到預期的結果 – charlietfl

+0

問題是額外的秒,所以添加的代碼示例如何計算額外的秒數。 –

+0

缺少的秒數真的不是這裏的問題。 OP的問題是需要幾毫秒(8559000)並將其轉換爲小時和分鐘,因此告訴他們如何在幾秒鐘內得出結果並不能回答這個問題(儘管約60 * 0.3775 *的關鍵點是*埋藏在你的回答中)。 – nnnnnn

0

檢查了這一點:

//<![CDATA[ 
 
// external.js 
 
var doc, bod, htm, C, E, T, TimeSpan; // for use on other loads 
 
addEventListener('load', function(){ 
 

 
// Maybe you'll learn something here 
 
doc = document; bod = doc.body; htm = doc.documentElement; 
 
C = function(tag){ 
 
    return doc.createElement(tag); 
 
} 
 
E = function(id){ 
 
    return doc.getElementById(id); 
 
} 
 
T = function(tag){ 
 
    return doc.getElementsByTagName(tag); 
 
} 
 
TimeSpan = function(startDate, endDate){ 
 
    var workingHours = (endDate.getTime()-startDate.getTime())/3600000; 
 
    this.hours = Math.floor(workingHours); 
 
    var ml = (workingHours-this.hours).toString().length-2, workingMinutes = (workingHours*Math.pow(10, ml)-this.hours*Math.pow(10, ml))*60/Math.pow(10, ml); 
 
    this.minutes = Math.floor(workingMinutes); 
 
    var sl = (workingMinutes-this.minutes).toString().length-2; 
 
    this.seconds = Math.round((workingMinutes*Math.pow(10, sl)-this.minutes*Math.pow(10, sl))*60/Math.pow(10, sl)); 
 
} 
 
var form = E('form'); 
 
form.addEventListener('sumbit', function(ev){ 
 
    ev.preventDefault(); 
 
}); 
 
var start = E('start'), stop = E('stop'), btn = E('btn'); 
 
start.value = 'Fri Apr 21 2017 10:57:11 GMT+0530 (IST)'; 
 
stop.value = 'Fri Apr 21 2017 13:19:50 GMT+0530 (IST)'; 
 
function displaySpan(){ 
 
var span = new TimeSpan(new Date(start.value), new Date(stop.value)); 
 
E('output').innerHTML = 'Hours: '+span.hours+'<br />Minutes: '+span.minutes+'<br />Seconds: '+span.seconds; 
 
} 
 
btn.addEventListener('click', displaySpan); 
 
var els = form.elements; 
 
for(var i=0,fe,l=els.length; i<l; i++){ 
 
    fe = els[i]; 
 
    fe.addEventListener('keypress', function(ev){ 
 
    if(ev.keyCode === 13)displaySpan(); 
 
    }); 
 
} 
 

 
}); 
 
//]]>
/* external.css */ 
 
html,body{ 
 
    padding:0; margin:0; 
 
} 
 
.main{ 
 
    width:980px; margin:0 auto; 
 
} 
 
#form{ 
 
    width:600px; height:50px; background:green; color:#fff; padding:10px; 
 
} 
 
#form>label{ 
 
    width:40px; 
 
} 
 
#form>label,#form>input[type=text]{ 
 
    display:block; float:left; 
 
} 
 
#form>input[type=text]{ 
 
    width:250px; margin-bottom:10px; 
 
} 
 
#form>#start{ 
 
    margin-right:7px; 
 
} 
 
#form>#btn{ 
 
    display:block; margin:0 auto; 
 
}
<!DOCTYPE html> 
 
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> 
 
    <head> 
 
    <meta http-equiv='content-type' content='text/html;charset=utf-8' /> 
 
    <title>TimeSpan</title> 
 
    <link type='text/css' rel='stylesheet' href='external.css' /> 
 
    <script type='text/javascript' src='external.js'></script> 
 
    </head> 
 
<body> 
 
    <div class='main'> 
 
    <form id='form'> 
 
     <label for='start'>Start:</label><input id='start' name='start' type='text' /> 
 
     <label for='stop'>Stop:</label><input id='stop' name='stop' type='text' /> 
 
     <input id='btn' type='button' value='TimeSpan' /> 
 
    </form> 
 
    <div id='output'></div> 
 
    </div> 
 
</body> 
 
</html>

注意的JavaScript與小數的麻煩。解決方法是將它們乘以10的冪數然後除以相同的整數。