2011-08-12 3 views

Répondre

2

Tant que les deux heures sont en GMT/UTC, vous pouvez faire date1.getTime() - date2.getTime(), puis diviser le résultat par 86400000 pour obtenir le nombre de jours. Le reste est probablement assez intuitif.

EDIT - basé sur la question éditée

Pour convertir des chaînes en dates, utilisez la classe SimpleDateFormat.

String yourDateString = "8/11/11 9:16:36 PM"; 
SimpleDateFormat format = 
      new SimpleDateFormat("MM/dd/yy HH:mm:ss a"); 
Date yourDate = format.parse(yourDateString); 
+0

Merci beaucoup qui a bien fonctionné! – DRiFTy

2

La plupart des accesseurs de Date sont obsolètes, remplacés par des méthodes de calendrier. Voici comment vous le feriez

Date date1, date2; //initialized elsewhere 
Calendar day1 = new Calendar(); 
day1.setTime(date1) 

Calendar day2 = new Calendar(); 
day2.setTime(date2); 


int yearDiff, monthDiff, dayDiff, hourDiff, minuteDiff, secondDiff; 
yearDiff = Math.abs(day1.get(Calendar.YEAR)-day2.get(Calendar.YEAR)); 
monthDiff = Math.abs(day1.get(Calendar.MONTH)-day2.get(Calendar.MONTH)); 
dayDiff = Math.abs(day1.get(Calendar.DAY_OF_YEAR)-day2.get(Calendar.DAY_OF_YEAR)); 
hourDiff = Math.abs(day1.get(Calendar.HOUR_OF_DAY)-day2.get(Calendar.HOUR_OF_DAY)); 
minuteDiff = Math.abs(day1.get(Calendar.MINUTE)-day2.get(Calendar.MINUTE)); 
secondDiff = Math.abs(day1.get(Calendar.SECOND)-day2.get(Calendar.SECOND)); 

Ensuite, vous pouvez faire ce que vous voulez avec ces chiffres.

+0

Merci beaucoup pour ça. Oui, je remarquais que beaucoup de méthodes de date sont obsolètes. J'ai fini par utiliser votre méthode ici et ça rend les choses très faciles, j'apprécie votre aide! +1 – DRiFTy

1

définir un SimpleDateFormat correspondant à votre format (le doc java est assez simple), puis utilisez la méthode parse pour obtenir un objet Date approprié, à partir de laquelle vous pouvez facilement calculer la différence entre les deux dates. Une fois que vous avez cette différence, le mieux est probablement de calculer "manuellement" le nombre de jours/heures/minutes/secondes, bien qu'il soit possible d'utiliser à nouveau une manière générique.

Questions connexes