Как найти разницу двух временных меток в java?

у меня есть 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 ответов


может быть, вот так:

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

предполагая, что у вас есть объекты метки времени или объекты даты в вашем ArrayList вы могли бы сделать:

Timestamp a = timeSt.get(0);

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

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

вы должны сделать свой ArrayList x до ArrayList<TimeStamp> x. Впоследствии, ваш метод get(int) вернет объект типа TimeStamp (вместо String). На TimeStamp вам разрешено вызывать getTime().

кстати, вам действительно нужно java.sql.TimeStamp? Может быть, просто Date или Calendar проще и более уместно.