2016-03-09 19 views
0

我的英語不完美,但我希望你能理解我。Joda-Time - 兩個日期之間的秒數

我試圖讓兩個UNIX時間戳之間秒的差別,但它只是返回0

這是我的代碼

unixOnline = Long.valueOf(online); 
unixOffline = Long.valueOf(offline); 

DateTimeZone BERLIN = DateTimeZone.forID("Europe/Berlin"); 
DateTime dateTimeOnline = new DateTime(unixOnline * 1000L, BERLIN); 
DateTime dateTimeOffline = new DateTime(unixOffline * 1000L, BERLIN); 

int seconds = Seconds.secondsBetween(new LocalDate(dateTimeOnline), new LocalDate(dateTimeOffline)).getSeconds(); 
System.out.println("Seconds: " + seconds); 

編輯: 在線時間戳:1457536522 離線時間戳:1457536642

+1

什麼值的在線和離線a你重新測試嗎? – Ben

+0

在線時間戳:1457536522離線時間戳:1457536642 –

+0

這是120秒的差異,這是0小時到最近的小時。 – Ben

回答

4

LocalDate沒有時間分量,所以如果時間在同一天,他們有效地變成了同一時間。相反,只是將日期時間差異化;

int hours = Hours.hoursBetween(dateTimeOnline, dateTimeOffline).getHours(); 

(或在您的情況下,由於差只有2分鐘,你只看到MinutesSeconds結果)

編輯:由於這個問題似乎也沒什麼做的時區BERLIN在代碼中,這個答案有點複雜。相反,如果它只是UTC時間之間的時間差異,請使用krzydyn的答案。

+0

我很笨。謝謝! –

+1

如果時差可以跨越午夜,您應該使用'LocalDateTime'。 – Andreas

+0

@Andreas是的,謝謝,絕對是一個更好的主意。更新了答案。 –

2

既然你已經在幾秒鐘的時間戳也可以是簡單的公式來計算:

int hours = (t2-t1)/3600; 

,或者您需要分數:

float hours = (t2-t1)/3600f; 

更新:(也許我得到了答案建議: ) 因此,以秒爲單位的時間差異更簡單:

long seconds = t2-t1; 
+0

爲什麼在幾秒鐘內回答幾個小時? – Andreas

+0

@ Joachim的答案是解決方案 –

+0

@Andreas Downvoting感覺這裏有點太難,因爲原來的問題是幾個小時而不是幾秒鐘 - 請參閱OP的編輯。 –