tl; dr
java.time.Period.between(startLocalDate , stopLocalDate)
java.time
Le accepted Answer par Modus Tollens est correcte.
FYI, le projet Joda-Time est maintenant en maintenance mode, l'équipe conseillant la migration vers les classes java.time. Voir Tutorial by Oracle.
Voici la version moderne de votre code.
L'analyse de vos chaînes est OffsetDateTime
car elles incluent un décalage par rapport à l'UTC mais pas un fuseau horaire complet.
OffsetDateTime start = OffsetDateTime.parse("2014-05-28T00:00:00.000+05:30") ;
Il est préférable d'utiliser un fuseau horaire plutôt qu'un décalage, s'il est connu.
ZoneId z = ZoneId.of("Asia/Kolkata") ;
ZonedDateTime start = LocalDate.parse("2014-05-28").atStartOfDay(z) ;
Si votre voulez vraiment travailler avec une date seulement au lieu d'un moment date-heure, utilisez la classe LocalDate
.
LocalDate start = LocalDate.parse("2014-05-28") ;
Vous pouvez extraire une date que LocalDate
soit du OffsetDateTime
ou ZonedDateTime
en appelant toLocalDate
.
Représente l'intervalle de temps que vous voulez sauter en utilisant la classe Period
.
Period p = Period.ofMonths(9).plus(Period.ofDays(12)) ;
Vérifiez que cette valeur en générant une chaîne est le format ISO 8601 standard.
String pOutput = p.toString() ;
P9M12D
Ajouter la période à la date de début ou date-heure.
LocalDate later = start.plus(p) ; // Add the `Period` span-of-time to our starting date.
Pour calculer le temps écoulé, utilisez Period.between
.
Period p = Period.between(startLocalDate , stopLocalDate) ;
A propos java.time
Le cadre java.time est construit en Java 8 et versions ultérieures. Ces classes supplantent les vieilles classes legacy de date-heure gênantes telles que java.util.Date
, Calendar
, & SimpleDateFormat
. Le projet Joda-Time, maintenant en maintenance mode, conseille la migration vers les classes java.time.
Pour en savoir plus, voir le Oracle Tutorial. Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310.
Où obtenir les classes java.time?
- Java SE 8, Java SE 9, et plus tard
- intégré.
- Partie de l'API Java standard avec une implémentation groupée.
- Java 9 ajoute quelques fonctionnalités et corrections mineures.
- Java SE 6 et Java SE 7
- Une grande partie de la fonctionnalité de java.time est de retour à Java 6 Ported .
- Android
- Les versions ultérieures de mises en œuvre bundle Android des classes java.time.
- Pour Android plus tôt, le projet ThreeTenABP adapte ThreeTen-Backport (mentionné ci-dessus). Voir How to use ThreeTenABP….
Pour votre information, le projet [Joda-Time] (http://www.joda.org/joda-time/) est maintenant en [mode maintenance] (https://en.wikipedia.org/wiki/Maintenance_mode), l'équipe conseillant la migration vers les classes [java.time] (http://docs.oracle.com/javase/9/docs/api/java/time/package-summary.html). Voir [Tutoriel Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –