10
votes

Différence de deux joda localDaTimes

J'ai 2 joda localDateTime des objets et besoin de produire une 3ème différence qui représente la différence entre eux: xxx

La seule façon dont je peux comprendre que Tracez minutieusement chaque champ de date / heure et effectue son fonctionnement respectif moins : xxx

Le résultat final serait simplement d'appeler DIFF < / Code> 'S Tostring () méthode et obtenez quelque chose de significatif. Par exemple, si start.tostring () produit 2012/02 / 08T15: 05: 00 et fin.tostring () produit 2012/02 / 08T16: 00: 00, alors diff.tostring () serait la différence (55 minutes) et pourrait ressembler à 2012/02 / 08T00: 55: 00.

et, s'il s'agit d'un abus terrible de localDaTetime , 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).

merci à l'avance!


0 commentaires

4 Réponses :


19
votes

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)


5 commentaires

J'aime Joda, mais je suis toujours accablé. Période et Durée 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 ? Pourquoi en ai-je besoin pour voir si un localDateTime é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.


API DOC pour la période



10
votes

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: xxx


0 commentaires

1
votes

J'ai trouvé une solution de contournement en utilisant les étapes suivantes:

  1. Prenez deux objets localDateTime comme début et fin
  2. Convertissez les deux en un objet instantané tel que start.toInstant (ZoneOffset.utc);
  3. Calculez la durée en utilisant durée.Petween (Instant T1, instant T2)
  4. 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 ()

    J'ai fourni un exemple complet ci-dessous. xxx


0 commentaires

0
votes
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/

0 commentaires