2015-09-09 86 views
0

我試圖在客戶端計算機上本地計算時間以指定特定促銷的結束時間。我用下面的代碼這樣做:在javascript中計算時間差異時的奇怪行爲

var targetDate = new Date(1442055673000); 
var currentDate = new Date; 
setInterval(updateTime, 1000); 
function updateTime() { 
    var diff = new Date(targetDate - new Date()); 
    var days = diff.getUTCDay(); 
    var hours = diff.getUTCHours(); 
    var minutes = diff.getUTCMinutes(); 
    var seconds = diff.getUTCSeconds(); 
    console.log(days + " : " + hours + " : " + minutes + " : " + seconds);} 

在該活動結束日期是2015年9月12日,今天是2015年9月9日。無論出於何種原因,差異計算不正確(它表明差異是6天而不是3天)。

+1

除了安德烈的回答,這個問題可能會有所幫助:http://stackoverflow.com/questions/2627473/how -days-between-dates-between-dates-dates-javascript-code- – Marc

+0

你正在根據2個時間戳的差異構建一個日期,這不是你所期望的。 – Joseph

回答

0

getUTCDay()方法根據通用時間返回指定的 日期中的星期幾,其中0表示星期日。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDay

你正在創建從日期的差異,這對於日期的差異非常糟糕表現日期。最簡單的辦法讓天數,小時數,剩下的就是用整數除法:

var diff = Math.floor(new Date(targetDate - new Date())/1000); 
    var days = Math.floor(diff/(60*60*24)); 
    diff %= 60*60*24; 
    var hours = Math.floor(diff/(60*60)); 
    diff %= 60*60; 
    var minutes = Math.floor(diff/(60)); 
    diff %= 60; 
    var seconds = diff;