2013-08-02 76 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是的。对不起,星球大战粉丝。 :) –

相关问题