2013-10-30 160 views
1

我想要兩個日期時間之間的持續時間。我有開始日期,開始時間,結束日期和結束時間。現在我必須找出它們之間的區別。如何獲得JavaScript中兩個日期時間之間的時間差?

其實我已經試過了下面的代碼,但是我得到了'invalidate date'這樣的提示。

function myfunction() 
{ 
    var start_dt = '2013-10-29 10:10:00'; 
    var end_dt = '2013-10-30 10:10:00'; 

    var new_st_dt=new Date(start_dt); 
    var new_end_dt=new Date(end_dt); 

    alert('new_st_dt:'+new_st_dt); 
    alert('new_end_dt:'+new_end_dt); 

    var duration=new_end_dt - new_st_dt; 

    alert('duration:'+duration); 
} 

等作爲警報味精如下:

new_st_dt:invalid date 
new_end_dt: invalid date 
duration:NaN 

,當我在安卓模擬器運行我這些警報消息。

請幫幫我如何得到它?如何實現這一點?

回答

0

嘗試按照isoformat格式化時間戳,以便JavaScript識別它們。 (你在日期和時間之間加上「T」)。例如:'2013-10-29T10:10:00'

1

您正在向該Date()構造函數傳遞無效的ISO日期字符串。它需要一個形式類似

YYYY-MM-DDThh:mm:ss 

例如

2013-10-29T10:10:00 

所以你基本上忘了T到單獨的日期和時間。但即使瀏覽器現在讀入ISO字符串,也不會有unix時間戳來計算。要麼你可以調用

Date.parse('2013-10-29T10:10:00'); // returns a timestamp 

,或者你需要明確地解析Date對象,像

var duration=(+new_end_dt) - (+new_st_dt); 

進一步閱讀:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

0
function dateDiff(){ 
var start_dt = '2013-10-29 10:10:00'; 
var end_dt = '2013-10-30 10:10:00'; 

var d1= start_dt ; 
d1.split("-"); 
var d2= end_dt ; 
d2.split("-"); 
var t1 = new Date(d2[0],d2[1],d2[2]); 
var t2 = new Date(d1[0],d1[1],d1[2]); 
var dif = t1.getTime() - t2.getTime(); 
var Seconds_from_T1_to_T2 = dif/1000; 
return Math.abs(Seconds_from_T1_to_T2); 
} 
相關問題