2013-02-11 3 views
4

У меня есть ArrayList, включая несколько марок времени, и цель - найти разницу между первым и последним элементами ArrayList.Как найти разницу между двумя метками времени в java?

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

Я также преобразовал типы в целом, но все же он дает мне ошибку The method getTime is undefined for the type String.

Дополнительная информация:

У меня есть класс А, который включает в себя

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

и есть класс В, который имеет метод 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); 

И одним условием является то, что stat ление (String timeStamp = new SimpleDateFormat("ss S").format(new Date());) обыкновение быть изменен в классе А. И объект класса B создается в классе А, так что он вызывает метод dialogueDuration(timeStamp) и передает значения временных марок до класса В.

Моя проблема заключается в это вычитание не работает, он дает ошибку cannot invoke getTime() method on the primitive type long. Он дает такую ​​же ошибку для типов int и String?

Большое спасибо!

+0

Ну что вы * ожидать * 'GetTime()', чтобы сделать , когда вызывается строка? С чем именно состоит ваш ArrayList? (И почему у вас, видимо, есть переменная, называемая 'ArrayList'? Это очень запутанно.) –

+0

Я ожидаю getTime(), чтобы помочь мне найти разницу в первой и последней отметках времени. Но, по-видимому, это не работает wirith Strings, но это не работают ни с целым типом. Мой Arraylist состоит только из временных меток. моя переменная не называется фактически Arraylist.i написала ot, как это просто, чтобы сделать очевидным, что это список массивов. – user2052015

+0

Вам нужно показать образцы ваших * фактических данных *. Просто сказать, что они строки не очень полезны - строки в каком формате? –

ответ

10

Может быть, как это:

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

Я не могу это сделать, потому что: У меня есть класс А, который включает в себя [Строка TIMESTAMP = новый SimpleDateFormat ("сс S") формат (новая дата()); ] и есть класс B, который имеет метод [private void dialogDuration (String timeStamp)] и метод dialogDuration включает в себя: String a = timeSt.get (0); \t // timeSt - это ArrayList, который включает все времяStamps String b = timeSt.get (timeSt.size() - 1); // Этот метод направлен на поиск разницы первого и последнего элементов (временных меток) ArrayList (в секундах) – user2052015

+0

long i = Long.parseLong (a); \t \t \t long j = Long.parseLong (b); \t \t \t \t \t \t долго Diff = j.getTime() - i.getTime(); \t \t \t \t \t \t System.out.println ("а:" + I); \t \t \t System.out.println ("b:" + j); – user2052015

+0

И одним условием является утверждение ([String timeStamp = new SimpleDateFormat («ss S»). Format (new Date());]) не будет изменено в классе A. И объект класса B создается в классе A так что он вызывает метод dialogDuration (timeStamp) и передает значения timeStamps классу B. Моя проблема заключается в том, что эта подстановка не работает, она дает ошибку (не может вызвать метод getTime() для примитивного типа long). он дает такую ​​же ошибку для типов int и String? – user2052015

0

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

Кстати, вам действительно нужно java.sql.TimeStamp? Возможно, простое Date или Calendar проще и уместнее.

3

Если у вас есть объекты Timestamp или дата объекты в ArrayList вы могли бы сделать:

Timestamp a = timeSt.get(0); 

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

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

К сожалению, у меня нет объектов в моем arraylist. Существует еще один класс, который включает String timeStamp = новый SimpleDateFormat («ss S»).format (новая дата()); и я получаю временные метки через эту часть. И передаю значения timestamp в arraylist другого класса и делаю вычисления, создавая новый метод. Так как я могу добавить этот объект, потому что Date() находится в другом классе ??? – user2052015

+0

Итак, вы не можете вызвать getTime для объекта String, потому что он не является членом этого класса. Вы должны разбирать строку и форматировать ее так, как вы можете ее использовать в течение длительного времени. . –

Смежные вопросы