2014-02-17 40 views
0

如何找到當前的歷元時間戳記位於Java中給定的兩個時期戳記之間。如何找到java中的時代戳記之間的差異

+1

如果你必須知道'b'是否在'a'和'c'之間,你會怎麼做? –

+0

定義「epoch」... Java只有一個,當'Date'值爲'0'時,1970年1月1日... – MadProgrammer

+0

只需比較像數字這樣的值! –

回答

0

作爲@Akstar建議,您可以使用Java DateDate.getTime()方法返回一個long,表示自紀元以來的毫秒數。

因此,只需將Date對象轉換爲長整型並比較值即可。

0

Joda-Time庫是與Java捆綁在一起的臭名昭著的麻煩java.util.Date & Calendar類流行的替代品。

在Joda-Time中,DateTime對象表示宇宙時間軸上的一個點。雖然與java.util.Date類似,但DateTime與它自己的時區不同。

Joda-Time提供了一個Interval類,它定義了時間軸上的開始和結束。間隔是「半開」,意思是開始是包括和結尾是獨家。半開放通常是處理一段時間的好方法。 Interval對象提供了一個contains方法來測試給定的DateTime是在裏面還是外面。

Interval interval = new Interval(new DateTime(2013, 1, 1, 0, 0, 0, DateTimeZone.forID("America/Montreal")), new DateTime(2013, 1, 5, 0, 0, 0, DateTimeZone.forID("America/Montreal"))); 
DateTime now = new DateTime(DateTimeZone.forID("Europe/Paris")); 
boolean isNowInThatInterval = interval.contains(now); 

你會發現已經回答了很多這樣的問題,如果你之前發佈StackOverflow上搜索。

0

首先,我相信你在說什麼是時間戳(而不是「時代時間戳」)對不對?

鑑於時間戳在Java中通常是由java.util.Date表示,有一些方法可以使用:

(假設我們正在實施的方法static boolean isBetween(Date myDate, Date date1, Date date2),並假設你不知道的date1date2是早期)

  1. 使用日期的長表示例如return myDate.getTime() < time1.getTime()) != (myDate.getTime() < time2.getTime()));

  2. 使用日期的after/before方法。例如return (myDate.after(date1) != myDate.after(date2));

  3. 喬達有很好的API來表示的日期時間範圍,像Interval你可以利用,以確定它是否包含一個特定的時間。

相關問題