Je sais qu'il y a beaucoup de questions sur SO sur la façon d'obtenir, mais je veux et par exemple utiliser la nouvelle API Java 8 Date. Je connais également la bibliothèque JodaTime, mais je veux une méthode de travail sans bibliothèques externes.
La fonction doit se plaindre de ces restrictions:
- Empêche les erreurs de sauvegarder la date
- Les entrées sont deux objets de Date (sans heure, je connais localdatetime, mais je dois faire avec les instances de date)
DAYS.between(localDate1, localDate2)
.Réponses:
Si vous voulez des jours calendaires logiques , utilisez la
DAYS.between()
méthode dejava.time.temporal.ChronoUnit
:Si vous voulez des jours littéraux de 24 heures (une durée ), vous pouvez utiliser la
Duration
classe à la place:Pour plus d'informations, reportez-vous à ce document .
la source
Duration.between(today.atTime(0, 0), yesterday.atTime(0, 0)).toDays()
.today.atTime(0, 0)
vous pouvez le fairetoday.atStartOfDay()
.ChronoUnit.DAYS.between(firstDate, secondDate)
Sur la base des commentaires de VGR, voici ce que vous pouvez utiliser:
la source
Vous pouvez utiliser
until()
:la source
until
est qu'il renvoie un objet Period . Cela renverra un certain nombre d'années / mois / jours entre les deux dates, pas le nombre réel de jours. Et getDays () sur la période ne renvoie que la partie jours (sans tenir compte du nombre d'années ou de mois), plutôt que le nombre total de jours. La deuxième version fonctionne exactement comme vous le souhaitez pour obtenir un nombre de jours entre deux dates.Vous pouvez utiliser à
DAYS.between
partir dejava.time.temporal.ChronoUnit
par exemple
la source
Nous pouvons utiliser la méthode between () de l' énumération ChronoUnit :
ChronoUnit.DAYS compte les jours qui se sont terminés sur 24 heures .
la source
Utilisez les JOURS dans l'énumération java.time.temporal.ChronoUnit . Voici l'exemple de code:
Sortie: * Nombre de jours entre la date de début: 2015-03-01 et la date de fin: 2016-03-03 est ==> 368. ** Nombre de jours entre la date de début: 2016-03-03 et la date de fin: 2015-03-01 est ==> -368 *
la source
Tout le monde dit d'utiliser ChronoUnit.DAYS.between mais cela délègue simplement à une autre méthode que vous pourriez vous appeler. Vous pourriez donc aussi le faire
firstDate.until(secondDate, ChronoUnit.DAYS)
.Les documents pour les deux mentionnent en fait les deux approches et disent d'utiliser celle qui est plus lisible.
la source
Voici:
la source
Obtenez le nombre de jours avant Noël à partir du jour actuel, essayez ceci
la source
Si l'objectif est simplement d'obtenir la différence en jours et que les réponses ci-dessus mentionnent les méthodes de délégué, je voudrais souligner qu'une fois, vous pouvez également simplement utiliser -
la source
la source
Je sais que cette question concerne Java 8, mais avec Java 9, vous pouvez utiliser:
la source
Utilisez la classe ou la méthode qui répond le mieux à vos besoins:
Une durée mesure une durée en utilisant des valeurs basées sur le temps (secondes, nanosecondes).
Une période utilise des valeurs basées sur la date (années, mois, jours).
La méthode ChronoUnit.between est utile lorsque vous souhaitez mesurer une quantité de temps dans une seule unité de temps, comme des jours ou des secondes.
https://docs.oracle.com/javase/tutorial/datetime/iso/period.html
la source