2014-04-12 145 views
0

我想在幾秒鐘內找到兩個日期(或時間,不知道該怎麼說)之間的差異。時差返回NaN

這裏是代碼:

var montharray = new Array ("Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" , "Sept" , "Oct" , "Nov" , "Dec") 
function time_difference (yr,m,d,h,mins,sec){ 
var today = new Date(); 
var this_year = today.getYear(); 
if (this_year<1000) 
this_year+=1900; 
var this_month= today.getMonth(); 
var this_day=today.getDate(); 
var this_hour=today.getHours(); 
var this_mins=today.getMinutes(); 
var this_secs=today.getSeconds(); 
var today_string=montharray[this_month]+" "+this_day+", "+this_year+" "+this_hour+" "+this_mins+" "+this_secs; 
var disconnect_string=montharray[m-1]+" "+d+", "+yr+" "+h+" "+mins+" "+sec; 
var difference=(Math.round((Date.parse(disconnect_string)-Date.parse(today_string))/1000)*1) 
alert(difference); 
    } 
time_difference(2014,4,13,16,0,0) 

(在我的國家,當我問的問題時間爲15:26)

但警報顯示我的NaN。

,但是當我只用年,月,日返回預期的結果,1

一些錯誤的標點符號或...?

回答

1

我的jsfiddle是在這裏:http://jsfiddle.net/naokiota/T2VV2/2/
我猜你會喜歡做的是這樣的:

function time_difference (yr,m,d,h,mins,sec){ 

var t1 = new Date(yr,m-1,d,h,mins,sec); 
var t2 = Date.now(); 
var diff_msec = t1 - t2; 
var diff_seconds = parseInt(diff_msec/1000); 
var diff_minutes = parseInt(diff_seconds/60); 
var diff_hours = parseInt(diff_minutes/60); 

alert(diff_seconds+" seconds"); 
alert(diff_minutes+" minutes"); 
alert(diff_hours+" hours"); 

} 
time_difference(2014,4,13,16,0,0); 

希望這有助於。

+0

謝謝你,幫助!這可能是做我想做的最簡單的方法。 – yamahamm

2

使用方法getTime。它以毫秒爲單位返回日期的UNIX偏移量。

var date1= new Date(); 
var date2 = new Date("2013-01-01"); 

var difference = (date1.getTime() - date2.getTime())/1000; 

如果你不知道哪兩個日期較早,您可以在結果使用Math.abs

difference = Math.abs(difference); 
+0

但是,如果我知道date2的確切h,分鐘和秒? – yamahamm

+0

這只是一個例子。您可以根據需要以儘可能多的粒度構建日期,例如'新日期(「星期六2014年4月12日14:42:41 GMT + 0200(W.歐洲日光時間)」)' – mingos