web-dev-qa-db-fra.com

Comment trouver la différence de deux horodatages en Java?

J'ai un ArrayList comprenant plusieurs horodatages et le but est de trouver la différence entre le premier et le dernier élément du ArrayList.

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

J'ai également converti les types en int mais cela me donne toujours une erreur The method getTime is undefined for the type String.

Information additionnelle :

J'ai une classe A qui comprend

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

et il y a une classe B qui a une méthode private void dialogDuration(String timeStamp)

et la méthode dialogueDuration comprend:

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); 

Et une condition est que l'instruction (String timeStamp = new SimpleDateFormat("ss S").format(new Date());) ne soit pas modifiée dans la classe A. Et un objet de classe B est créé dans la classe A pour qu'il invoque la méthode dialogueDuration(timeStamp) et passe la valeurs des horodatages en classe B.

Mon problème est que cette soustraction ne fonctionne pas, elle donne une erreur cannot invoke getTime() method on the primitive type long. Il donne le même type d'erreur également pour les types int et String?

Merci beaucoup d'avance!

9
user2052015

Peut-être comme ça:

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

En supposant que vous avez des objets Timestamp ou Date Objects dans votre ArrayList, vous pouvez faire:

Timestamp a = timeSt.get(0);

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

long diff = b.getTime() - a.getTime();
4
Marc-Emmanuel Ramage