Joda-Time: quelle est la différence entre la Période, de l'Intervalle et la Durée?
Dans Joda-Time 2, quelle est la différence entre les trois types de délais:
- Période
- Intervalle de
-
-
Pourquoi nous avons besoin de trois classes?
-
Celui qui fonctionne mieux?
-
Pourquoi est divisant une Période ou de la Durée ou de l'Intervalle instance a pas mis en œuvre? E. g.
p = p.divideBy(2);
-
Vous devez vous connecter pour publier un commentaire.
3 classes sont nécessaires parce qu'ils représentent des concepts différents, il s'agit donc de choisir le plus approprié pour la tâche plutôt que de la performance relative. À partir de la la documentation avec les commentaires ajoutés par moi dans italique:
Un intervalle dans Joda-Time représente un intervalle de temps à partir d'une milliseconde instant à un autre instant. Les deux instants sont précisées instants dans le datetime continuum, complet avec de fuseau horaire. Des moments spécifiques sont définis par exemple, ce pourrait être l'intervalle entre 20:00:00GMT hier et 09:00:00GMT ce matin.
Un durée dans Joda-Time représente une durée de temps mesuré en millisecondes. La durée est souvent obtenu à partir d'un intervalle. c'est à dire on peut soustraire commencer à partir de la fin d'un intervalle de dériver une durée
Un période dans Joda-Time représente une période de temps définie en termes de champs, par exemple, 3 ans et 5 mois 2 jours et 7 heures. Ceci diffère d'une durée qu'il est inexact en termes de millisecondes. Une période qui ne peut être résolu qu'à un nombre exact de millisecondes en spécifiant l'instant (y compris la chronologie et de fuseau horaire), il est relatif. par exemple, considérer la période de 1 an, si l'on ajoute ce 1er janvier, nous allons toujours par arriver à la prochaine, le 1er janvier, mais la durée dépend de la période de l'année est une année bissextile ou non. De même, si nous ajoutons 1 mois pour le 1er d'un mois, puis nous arriverons au 1er du mois suivant, mais la durée (en millisecondes) varient en fonction du mois en question
Pour la question 3, Une méthode spécifique pour diviser une durée n'est pas vraiment nécessaire parce que nous pouvons toujours obtenir le nombre de millisecondes à partir de la durée comme un
long
(à l'aide degetMillis()
), de le diviser et de construire une nouvelle durée (à l'aide denew Duration(long duration)
).De la division d'une période n'ont pas vraiment de sens réel basée sur la définition d'une période ci-dessus. par exemple, ce qui est la moitié d'un mois? (sa longueur dépend des mois).
À ajouter à mikej réponse:
Un Joda-Time durée est une "physique" de l'intervalle de temps; par exemple:
12000 milliseconds
<-- c'est une duréeUn Joda-Time intervalle est en fait une paire de instants (démarrage instantané de la fin de l'instantané). Un instant est, de nouveau, un "physique", un concept, un point dans le scénario. Par exemple, (seulement possible de notation):
(2010/3/3 19:00:00.000 UTC ; 2010/3/3 20:00:00.000 UTC)
<-- c'est un intervalle deUn intervalle, alors, peuvent être convertis en un durée, mais pas l'inverse.
Tenir compte de ces deux intervalles:
I1=(2010/3/3 19:00:00.000 UTC ; 2010/3/3 20:00:00.000 UTC)
I2=(2010/3/3 21:00:00.000 UTC ; 2010/3/3 22:00:00.000 UTC)
Que les intervalles,
I1
etI2
sont différents, car les points d'arrêt sont différents; mais si je convertir des durées, j'obtiens la même chose:3600000 milliseconds
.(Mathématiques analogie: les intervalles
[10,12]
et[95,97]
sont différents intervalles, mais ils ont la même longueur: "la durée de l'intervalle" cartes à durée).Enfin, un période est une période de "temps civil", exprimée en nombre de mois, jours, heures, etc. Il n'est pas-en soi - représentent une "physique" de l'intervalle, d'où il ne peut pas être directement converti en durée (mois ont longueur variable...).
Ceci répond à la question 3: vous ne pouvez diviser par deux le temps physique (une durée).