如何在java中找到两个时间戳的区别?

时间:2013-02-11 10:17:55

标签: java datetime arraylist date-difference

我有ArrayList包含几个时间戳,目的是找出ArrayList的第一个和最后一个元素的差异。

String a = ArrayList.get(0);
String b = ArrayList.get(ArrayList.size()-1);
long diff = b.getTime() - a.getTime();

我还将类型转换为int但仍然给出了错误The method getTime is undefined for the type String

其他信息:

我有一个包含

的A类
String timeStamp = new SimpleDateFormat("ss S").format(new Date());

并且有一个B类,其方法为private void dialogDuration(String timeStamp)

dialogueDuration方法包括:

String a = timeSt.get(0); // timeSt  is an ArrayList which includes all the timeStamps
String b = timeSt.get(timeSt.size()-1);   // This method aims finding the difference of the first and the last elements(timestamps) of the ArrayList  (in seconds)

long i = Long.parseLong(a);
long j = Long.parseLong(b);

long diff = j.getTime()- i.getTime();

System.out.println("a: " +i); 
System.out.println("b: " +j); 

一个条件是语句(String timeStamp = new SimpleDateFormat("ss S").format(new Date());)不会在A类中更改.B类的对象在A类中创建,以便它调用dialogueDuration(timeStamp)方法并传递值时间戳到B级。

我的问题是这个减法不起作用,它给出了一个错误cannot invoke getTime() method on the primitive type long。对于int和String类型,它也会出现同样的错误吗?

提前多多感谢!

3 个答案:

答案 0 :(得分:13)

也许是这样的:

SimpleDateFormat dateFormat = new SimpleDateFormat("ss S");
Date firstParsedDate = dateFormat.parse(a);
Date secondParsedDate = dateFormat.parse(b);
long diff = secondParsedDate.getTime() - firstParsedDate.getTime();

答案 1 :(得分:4)

假设您在ArrayList中有Timestamp对象或Date对象,您可以这样做:

Timestamp a = timeSt.get(0);

Timestamp b = timeSt.get(timeSt.size()-1);

long diff = b.getTime() - a.getTime();

答案 2 :(得分:-1)

您应该将ArrayList x改为ArrayList<TimeStamp> x。随后,您的方法get(int)将返回TimeStamp类型的对象(而不是类型String)。在TimeStamp上,您可以调用getTime()

顺便问一下,你真的需要java.sql.TimeStamp吗?也许简单的DateCalendar更容易也更合适。