Как найти разницу двух временных меток в 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
проще и более уместно.