2011-04-15 314 views
0

我對時間的計算,計算的延遲時間爲列車 安排時間:T1 到達時間:T2時間計算

function tomdiff(t1,t2) { 
    var t1 = hour2mins(t1); var t2=hour2mins(t2); 
    var ret = mins2hour(parseInt(t2-t1)); 
    if(t2<t1) {ret=mins2hour(parseInt(parseInt(t2+1440)-t1));} 
    return ret; 
} 

//Calculate on Key up 
    $("input.[rel=time1]").keyup(function (b){ $("#delaytime").val(tomdiff($("#schedule").val(),$("#arrival").val())); }); 

這是偉大的工作,但如果火車到達前面!

有人能告訴我嗎?

回答

0

根本問題是,您正試圖處理午夜(魔術號1440分鐘爲24小時)的包裝,信息不足。

如果t1t2Date情況下,代碼不必做這一切擺弄小時和分鐘,而不必擔心午夜:

function tomdiff(t1, t2) { 
    var msdiff; 

    msdiff = t2 - t1; // When you perform arithmetic on dates, their 
         // underlying EpochMS value (milliseconds since 
         // Jan 1, 1970) is used 
    return msdiff/1000/60; // Milliseconds => minutes 
} 

如果t1t2不是Date實例,它們應該是。 :-)大概你有火車的預定和實際到達時間的日期和時間。該Date構造讓你給那些在:

new Date(year, month, day [, hour, minute, second, millisecond ]) 

如果你發現自己需要做很多與日期/時間計算(和解析和顯示),我想看看DateJS

+0

以及我有一個日期字段(#jLdate),這是到達日期的鏈接! – user505790 2011-04-15 09:03:03

+0

@user:如果你有某種格式的日期和時間(即使它是文本格式),你應該能夠將它轉換成一個'Date'實例,你可以用它進行日期/時間運算。 (同樣,也許在DateJD的幫助下。) – 2011-04-15 09:07:09

+0

非常感謝datejs。 – user505790 2011-04-18 12:58:53

0

我可能不能正確認識這個問題,但如果你是計算列車晚點,並沒有延遲,那麼延遲爲0

沒有?

編輯:

使用Date.js我下面提到的,你可以做時髦的東西一樣..

Date.parse('now - 10 hours'); 
Date.parse('15-04-2011').add(-1).day() 

如果使用DateJs只是知道文化/本地化

<!-- Set the CultureInfo to de-DE (German/Deutsch) --> 
<script type="text/javascript" src="date-de-DE.js"></script> 
+0

是的,但如果我有t1 = 12:00和t2 = 11:50 am得到23:50 – user505790 2011-04-15 08:41:34

+0

那麼這是一個問題,你如何計算差異。你沒有列出你正在使用的功能,但我認爲你沒有考慮日期? – Dve 2011-04-15 08:43:59

+0

你可能想看看像http://www.datejs.com/這樣的嘗試和測試,做出計算 – Dve 2011-04-15 08:45:52

0

看起來像你必須在那裏添加一個日期字段。所以,在計算日期之前,您將首先檢查t1和t2的日期。或者可能將它們轉換爲unix時間戳並對其進行計算(在添加日期之後)。