J'ai 2 joda La seule façon dont je peux comprendre que Tracez minutieusement chaque champ de date / heure et effectue son fonctionnement respectif Le résultat final serait simplement d'appeler et, s'il s'agit d'un abus terrible de merci à l'avance! p> p> localDateTime CODE> des objets et besoin de produire une 3ème différence qui représente la différence entre eux:
moins code>: p>
DIFF < / Code> 'S
Tostring () code> méthode et obtenez quelque chose de significatif. Par exemple, si
start.tostring () code> produit 2012/02 / 08T15: 05: 00 et
fin.tostring () code> produit 2012/02 / 08T16: 00: 00, alors
diff.tostring () code> serait la différence (55 minutes) et pourrait ressembler à 2012/02 / 08T00: 55: 00. p>
localDaTetime code>, j'ai juste besoin de savoir comment prendre la différence de temps entre les deux et mettre cette différence dans un format facile à lire (humain). p>
4 Réponses :
Vous pouvez utiliser org.joda.time.Période classe pour cela - en particulier le FieldDifence Méthode.
Exemple: P>
LocalDateTime endOfMonth = now.dayOfMonth().withMaximumValue(); LocalDateTime firstOfMonth = now.dayOfMonth().withMinimumValue(); Period period = Period.fieldDifference(firstOfMonth, endOfMonth)
J'aime Joda, mais je suis toujours accablé. Période CODE> et
Durée CODE> SON SELOWS, mais est assez différent. Je vois le besoin, mais ce n'est pas toujours intuitif.
@MPI: D'accord. Qu'est-ce qu'un lisiblePartial code>? Pourquoi en ai-je besoin pour voir si un
localDateTime code> était un certain temps il y a longtemps? AGH!
Parce que la période pourrait être un temps absolu indéfini. Par exemple, la période entre 14h35 et 15:36, qui est une "heure de la journée" partialrable, sera toujours 1 heure et 1 minute.
Le fait est que une période représente des choses telles que l'heure d'épargne du jour; Une période entre deux fois peut ne pas toujours être ce qu'il semble que ce soit, en fonction des quêtes de début / de fin choisies. Une durée est plus simple, ce sera toujours une quantité de temps exacte correcte.
Durée est meilleur pour certains cas. Vous pouvez obtenir une durée "Timezone-indépendant" à utiliser avec localDaTetitimes (en ligne horaire locale) par ce truc:
J'ai trouvé une solution de contournement en utilisant les étapes suivantes:
start.toInstant (ZoneOffset.utc); CODE> LI>
- Calculez la durée en utilisant
durée.Petween (Instant T1, instant T2) Code> Li>
- Convertissez-le en nanosecondes ou en millisecondes ou secondes en utilisant diverses méthodes de conversion. Les nanosecondes peuvent être calculées comme
durée.tonanos () code> li>
ol> J'ai fourni un exemple complet ci-dessous. p> xxx pré> p>
public static void printTimeDiffJoda(final String start, final String end) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { // Parse datetime string to org.joda.time.DateTime instance DateTime startDate = new DateTime(format.parse(start)); DateTime endDate = new DateTime(format.parse(end)); System.out.println("Joda Time API - Time Difference "); System.out.println("in years: " + Years.yearsBetween(startDate, endDate).getYears()); System.out.println("in months: " + Months.monthsBetween(startDate, endDate).getMonths()); System.out.println("in days: " + Days.daysBetween(startDate, endDate).getDays()); System.out.println("in hours: " + Hours.hoursBetween(startDate, endDate).getHours()); System.out.println("in minutes: " + Minutes.minutesBetween(startDate, endDate).getMinutes()); System.out.println("in seconds: " + Seconds.secondsBetween(startDate, endDate).getSeconds()); System.out.println(); } catch (ParseException e) { e.printStackTrace(); } } By http://www.luyue.org/calculate-difference-between-two-dates/