2013-03-15 57 views
0

在處理日期差異時,我在使用下面的代碼時不知何故功能假定所有的月份都有31天。例如。如果我在3月1日和2月28日之間減去差額,那就是4天。有沒有簡單的方法來扭轉這一點。任何幫助將不勝感激。日期正在考慮一個月中的第31天

function myFunction() 
{ 

var sysdt = "02/28/2013"; 
var year = sysdt.substring(6,10); 
var mon = sysdt.substring(0,2); 
var date = sysdt.substring(3,5); 
var n = Date.UTC(year,mon,date); 



var userdt = "03/01/2013" 
var yr = userdt.substring(6,10); 
var mn = userdt.substring(0,2); 
var dd = userdt.substring(3,5); 
var n1 = Date.UTC(yr,mn,dd); 


var x = document.getElementById("demo"); 
x.innerHTML=(n1-n)/(1000*24*60*60); 

} 
+1

對於日期的操作,你應該更好地利用圖書館,如[moment.js(http://momentjs.com/)因爲有使用日期時有很多缺陷 – Andreas 2013-03-15 11:59:46

回答

0

這會給你以毫秒爲單位兩個日期之間的區別,

var diff = Math.abs(date1 - date2); 

例如,它會是

var diff = Math.abs(new Date() - compareDate); 

你需要確保compareDate是一個有效日期目的。

像這樣的事情可能會爲你

var diff = Math.abs(new Date() - new Date(dateStr.replace(/-/g,'/'))); 

即轉向「2011-02-07 15點13分06秒」到新的工作日期(「2011/02/07 15時13分06秒」) ,這是Date構造函數可以理解的格式。

U可以減去像this--

var d1 = new Date(); //"now" 
var d2 = new Date("2011/02/01") // some date 
var diff = Math.abs(d1-d2); // difference in milliseconds 
var days = diff*24*60*60*1000; 
0

你的代碼實際上是從4月1日減3月1日,在JavaScript的日期的月份是從0開始。

+0

是的,感謝您的正確方向。 – user2173764 2013-03-15 13:19:21

0
var sysdt = "02/28/2013"; 
var date1 = new Date(sysdt); 

var userdt = "03/01/2013" 
var date2 = new Date(userdt); 

var days = (date2-date1)/(1000*24*60*60); 

或者在你的代碼從一個月減1

var sysdt = "02/28/2013"; 
var year = sysdt.substring(6,10); 
var mon = sysdt.substring(0,2)-1; // months are from 0 to 11 
var date = sysdt.substring(3,5); 
var n = Date.UTC(year,mon,date); 



var userdt = "03/01/2013" 
var yr = userdt.substring(6,10); 
var mn = userdt.substring(0,2)-1; // months are from 0 to 11 
var dd = userdt.substring(3,5); 
var n1 = Date.UTC(yr,mn,dd); 

var days = (n1-n)/(1000*24*60*60); 
+0

嗨,我想從日期減去1。 – user2173764 2013-03-15 13:18:33

+0

感謝您的快速幫助。 – user2173764 2013-03-15 13:18:49

相關問題