2014-09-21 132 views
0

嘗試將此功能從Get difference between 2 dates in javascript?更改爲以小時而不是天爲單位返回差異,但目前爲止沒有運氣。 =)獲取兩個日期對象之間的小時差異?

function dateDiffInDays(scheduled, due) { 
    var _MS_PER_DAY = 1000 * 60 * 60 * 24; 
    var scheduled = new Date(scheduled); 
    var due = new Date(due); 
    var utc1 = Date.UTC(scheduled.getFullYear(), scheduled.getMonth(), scheduled.getDate()); 
    var utc2 = Date.UTC(due.getFullYear(), due.getMonth(), due.getDate()); 
    return Math.floor((utc2 - utc1)/_MS_PER_DAY); 
} 

改變_MS_PER_DAY1000 * 60 * 60,但它不會工作返回零。請幫忙。

編輯: 「2014年9月21日上午09:00:00」

+0

* utc1和utc2的值是什麼?如果返回0,那麼utc1和utc2都表示*相同的*日(並且當天的同一小時)。 – user2864740 2014-09-21 05:46:11

+0

這是不正確的(-1和一個關閉的投票不包括* real * ** utc1 **和** utc2 **值)。再試一次 - 我可以說這是不準確的,因爲小時數*不會轉移到'Date.UTC'函數調用。 – user2864740 2014-09-21 05:47:54

+0

再次,'utc1'和'utc2'的* actual *值從那裏開始。然後問題和解決方案,包括複製相關的精度,將變得明顯。此外,複製哪些字段(以及是否應該創建新的Date對象)取決於*應該使用什麼規則 - 例如, 9點05分之後還有10點55分是「一小時」嗎? – user2864740 2014-09-21 05:53:33

回答

1

在你的問題,這些線:

var utc1 = Date.UTC(scheduled.getFullYear(), scheduled.getMonth(), scheduled.getDate()); 
var utc2 = Date.UTC(due.getFullYear(), due.getMonth(), due.getDate()); 

磨砂小時/這種格式的時間表和應有的價值分鐘/等。來自日期的信息,所以如果兩個日期在同一天,那麼結果將始終爲零。

一個更簡單的功能,可用於獲取時間差(以十進制數):如果你想爲一個圓角/地板INT

function dateDiffInHours(date1, date2) { 
    var msDiff = date2.getTime() - date1.getTime(); 
    return msDiff/3600000; 
} 

或者,然後應用Math.round()Math.floor()到返回結果。

根本不需要轉換爲UTC。

+0

'function dateDiffInHours(scheduled,due){ var scheduled = new Date(scheduled); var due = new日期(到期); var msDiff =(due.getTime() - scheduled.getTime())/ 3600000; return msDiff.toFixed(2); }' – 2014-09-21 06:07:22