2009-09-28 9 views
4

Quelle est la meilleure façon de savoir si un objet DateTime joda est dans les 4 heures d'un autre si je ne sais pas quel objet est plus tôt que l'autre? L'objet Joda Time Duration semble bien faire ce travail si je sais que l'objet A vient avant l'objet B, mais puisque Duration est signé, il ne semble pas faire ce que je veux si je ne connais pas l'ordre.Comment puis-je savoir si un objet DateTime joda-time est dans les 4 heures d'un autre?

On dirait qu'il y aurait un moyen facile de le faire, mais je ne l'ai pas encore trouvé.

Répondre

9

Il suffit d'utiliser le Hours pour cette classe:

Hours h = Hours.hoursBetween(date1, date2); 
int hours = h.getHours(); 
+0

Parfait! Exactement ce que je cherchais. – emmby

+1

J'ai remarqué une petite mise en garde à ce sujet. Scénario1: (temps1 = 4:00:00) et (temps2 = 8:00:00). Cela vous donne 4 heures - pas de problème ici. Cependant, dans le scénario 2: (time1 = 4:00:00) et (time2 = 8:30:00), vous obtenez toujours 4 heures lorsque l'intervalle entre les deux est en réalité de 4 heures et 30 minutes - ce qui serait hors de votre calendrier. Vous pourriez potentiellement obtenir une heure supplémentaire (non désirée). –

+0

J'ai remarqué cette question concernant le temps écoulé: http://stackoverflow.com/questions/2179644/how-to-calculate-elapsed-time-from-now-with-joda-time –

0

Vous pouvez utiliser la méthode compareTo() sur les deux objets DateTime pour déterminer laquelle est antérieure et utiliser Durée pour voir s'ils sont dans les 4 heures.

+0

Merci mR_fr0g, que l'on travaille aussi bien sûr, mais encore une fois, semble un peu maladroit. – emmby

0

les opérations suivantes:

if (Math.abs(new Duration(start, end).getStandardSeconds()) < 4 * 3600) { 
    // blah blah blah 
} 
+0

Ouais, ça marche bien, bien sûr, mais il semble un peu maladroit – emmby

Questions connexes