2012-03-25 38 views
1

我有一個火車時刻表應用程序,我想用下面的格式HH:MM來計算兩次之間的差異,所以我的用戶可以很容易地看到火車是否晚點(注意:我正在獲取「真實」數據來自互聯網,所以它是最新的)。這是我目前正在做的事情:計算兩次差異的有效算法?

//schedule time of the train 
    int hs=12; 
    int ms=0; 

    //real time of the train 
    int hr=12; 
    int mr=15; 

    int t1=hs*60 + ms; 
    int t2=hr*60 + mr; 

    int d; //integer for the difference in minutes 
    if(hr>=hs) d=t2-t1; //standard situation 
    else d=1440+t2-t1; //for situation like sch: 23:55, real: 00:05 

這是正確的嗎?我忘了什麼嗎?我在這個算法之前做了幾次嘗試,他們都有小錯誤,這可能會讓我的用戶感到困惑。據我所知,這一個沒有任何小故障,至少我找不到任何問題。

P.S:我不會使用任何第三方庫,所以我必須寫我自己的算法,儘管我希望這將是最後的...

THX!

編輯:注意:在這個例子中,hs/ms/hr/mr的值是硬編碼的,在我的應用程序中,我已經正確更新了每行的值。

+0

日期和日曆不是第三方庫。 – Blackbelt 2012-03-25 15:01:06

回答

1

這應該會給你在任何一天,或在任何一天的邊界,夏令時以外的細微差異。

+0

嗯,我不會在意這一點,因爲當沒有火車在移動時,夏令時會發生變化,所以任何搜索都會忽略此:) – hundeva 2012-03-25 15:10:22

1

您應該使用Java DateCalendarDateFormat實用程序類來實現您想要的(它們不是第三方,它們是Java庫幷包含在Android SDK中)。

你有你想要的這裏有很大爲例:Is there a function to calculate the difference between two times and display a relative result?

因爲你這裏有一個很好的例子DateFormat類:http://www.exampledepot.com/egs/java.text/formatdate.html

+0

我要檢查它,但是我在某處讀到,那些零件的libs很糟糕,而ppl會建議第三方庫......如果他們是對的,我不知道,但那是我爲什麼要編寫自己的解決方案的一個原因。無論如何,Thx! :) – hundeva 2012-03-25 15:09:08

+0

不,他們一點都沒有被破壞......你真的相信用過這麼多的庫和默認Java的一部分會被打破嗎?他們不是,他們適合你想達到的目標。 – greven 2012-03-25 15:46:17

+0

好吧,我可能會有點太偏執,時間到了...... :)無論如何,我不確定傳聞是否屬實,即使我懷疑他們不是,我想確定。 – hundeva 2012-03-25 16:43:30