2013-08-02 103 views
0

如何比較兩個timeStamp並從中獲得差異。我試圖獲得兩個不同時間戳之間的持續時間。使用日期,但我比較時發生異常。如何比較兩個不同TimeStamp之間的持續時間

該如何獲取時間戳2013年1月8日6時19分35秒

我越來越喜歡例外java.text.ParseException:無法解析 日期:「2013年1月8日06: 19:35"

+2

發佈您的代碼看看你在做什麼。 –

回答

-1
Calendar thatDay = Calendar.getInstance(); 
    thatDay.set(Calendar.DAY_OF_MONTH,25); 
    thatDay.set(Calendar.MONTH,7); // 0-11 so 1 less 
    thatDay.set(Calendar.YEAR, 1985); 

    Calendar today = Calendar.getInstance(); //THIS IS TO GET TODAY DATE, you can simpy use your two dates 

    long diff = today.getTimeInMillis() - thatDay.getTimeInMillis(); //result in millis 

下面是一個近似值......

long days = diff/(24 * 60 * 60 * 1000); 

PLUS:解析字符串中的日期,你可以使用

String strThatDay = "1985/08/25"; 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); 
    Date d = null; 
    try { 
    d = formatter.parse(strThatDay);//catch exception 
    } catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 


    Calendar thatDay = Calendar.getInstance(); 
    thatDay.setTime(d); //rest is the same.... 
+0

您的比較方法與[Sajal Dutta的答案](http://stackoverflow.com/a/18019271/1065197)存在同樣的問題,請查看我的評論。 –

+0

Eugh,這是一個'TimeUnit'類。不要重新發明輪子。 –

5

轉換日期成毫秒,然後你可以使用

long difference = finalDate.getTime() - initialDate.getTime();

關於你ParseException,有什麼不對的爲日期格式化程序解析模式。我認爲這是正確的"dd-MM-yyyy HH:mm:ss"如果要分析"01-08-2013 06:19:35"

喬達時間

或者您可以使用Joda-Time庫,並找到如下方式的時間差:

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MM-yyyy HH:mm:ss"); 
DateTime finalDate = formatter.parse("someDate1"); 
DateTime initialDate = formatter.parse("someDate2"); 
Interval interval = new Interval(finalDate, initialDate); 
+0

毫秒方法不是最好的方法。相反,只要保持喬達時間(不是約達時間)的方法。 –

+0

您可以使用'TimeUnit.MILLISECONDS.toXXX(差異)'來轉換另一個單位中的增量。 –

+0

@LuiggiMendoza是的。對不起,星球大戰粉絲。 :) –

相關問題