2013-05-10 61 views
8

我試過,但它失敗我如何獲得下一個生日前的幾天?

var diffDays1=(function(){ 
var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds 
var secondDate = new Date(new Date().getFullYear()+1,4,5); 
var firstDate = new Date(); 
return Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay))); 
})(); 

Wolfram Alpha的說,這是330天,diffDays1顯示它的359.這可能是由於夏令什麼的。有沒有辦法精確計算幾天,因爲沒有做服務器端。

+0

該函數並不總是返回到下一個生日的天數。它返回到明年生日的天數,有時恰好是你的下一個生日。 – Robert 2014-09-30 16:18:00

回答

14

問題是,你將4月份的月份設置爲4,而4月份的月份是3。見https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date#Parameters

var diffDays1=(function(){ 
    var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds 
    var secondDate = new Date(new Date().getFullYear()+1,3,5); 
    var firstDate = new Date(); 
    return Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay))); 
})(); 
+0

這裏代表什麼? – Lucas 2014-09-12 23:41:31

4

爲什麼要重新發明輪? 使用datejs

後:

var startd = Date.parseExact(ind, "yyyy-MM-dd"); 
var endd = Date.parseExact(end, "yyyy-MM-dd"); 
var diff = new Date(endd - startd); 
var days = diff/1000/60/60/24; 

這是所有鄉親!

相關問題