J'ai déjà tout configuré pour stocker la date actuelle dans une variable en Java. Ce que j'essaie de comprendre, c'est comment stocker une date d'un an après la date actuelle.
import Java.util.Date;
import Java.text.SimpleDateFormat;
import Java.text.DateFormat;
import Java.util.Scanner;
import Java.util.Calendar;
Voici ce que j'ai pour la date actuelle:
DateFormat newDate = new SimpleDateFormat("MM/dd/yyyy");
Date date = new Date();
startDate = newDate.format(date);
Donc, si c'était aujourd'hui par exemple, il serait stocké le 18/02/2013. J'essaie de stocker la date du 18/02/2014. Comment pourrais-je m'y prendre?
Si vous ne voulez pas faire glisser des bibliothèques externes, utilisez simplement calendar.add(Calendar.YEAR, 1)
Calendar cal = Calendar.getInstance();
Date today = cal.getTime();
cal.add(Calendar.YEAR, 1); // to get previous year add -1
Date nextYear = cal.getTime();
Remarque, si la date était 29/Feb/2012
et que vous avez ajouté 1 an, vous obtiendrez 28/Feb/2013
LocalDate.parse(
"2/18/2013" ,
DateTimeFormatter.ofPattern ( "M/d/uuuu" )
).plusYears( 1 )
La réponse acceptée est correcte, mais obsolète depuis Java 8.
Le framework Java.time intégré à Java 8 et aux versions ultérieures supplante les anciennes classes problématiques Java.util.Date/.Calendar. Les nouvelles classes s’inspirent du très réussi Joda-Time Framework, destiné à lui succéder, de concept similaire mais de nouvelle architecture. Défini par JSR 310 . Etendu par le projet ThreeTen-Extra . Voir le Tutorial .
LocalDate
Ces nouvelles classes incluent LocalDate
, pour représenter une valeur de date uniquement, sans heure ni fuseau horaire.
Nous devons d’abord analyser l’entrée de chaîne. Le Java.time formateur utilise des codes de modèle similaires aux anciennes classes, mais pas exactement les mêmes. Veillez donc à lire attentivement le nouveau document.
Notez que votre chaîne d'entrée n'a pas de chiffre initial zéro pour certaines valeurs. Cela signifie que vous devez utiliser des codes de modèle uniques, M
et d
, plutôt que MM
et dd
. Double codes signifie que vous vous attendez à ce que le zéro de remplissage soit toujours inclus pour les valeurs à un seul chiffre, 02
au lieu de 2
.
String input = "2/18/2013";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "M/d/uuuu" );
LocalDate localDate = LocalDate.parse ( input , formatter );
Ajouter une année. Le framework Java.time prend en charge les années bissextiles.
LocalDate yearLater = localDate.plusYears ( 1 );
Dump à la console.
System.out.println ( "localDate: " + localDate + " and yearLater: " + yearLater );
localDate: 2013-02-18 et yearLater: 2014-02-18
Le cadre Java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes classes gênantes héritées _ date-heure telles que Java.util.Date
, Calendar
_, & SimpleDateFormat
.
Le projet Joda-Time , désormais en mode { mode maintenance }, conseille la migration vers les classes Java.time .
Pour en savoir plus, consultez le Oracle Tutorial . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
Vous pouvez échanger des objets Java.time directement avec votre base de données. Utilisez un pilote JDBC compatible avec JDBC 4.2 ou une version ultérieure. Pas besoin de chaînes, pas besoin de Java.sql.*
classes.
Où obtenir les classes Java.time?
Le projet ThreeTen-Extra étend Java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels ajouts à Java.time. Vous pouvez y trouver des classes utiles telles que Interval
_, YearWeek
, YearQuarter
_ et plus _.
Utilisez Calendar # add (champ int, montant int) méthode.Vous devez utiliser l'API de calendrier pour manipuler les opérations de date et d'heure.
Calendar today = Calendar.getInstance();
Calendar nextYearToday = today;
nextYearToday.add(Calendar.YEAR, 1);
Calendar cal = Calendar.getInstance();
Date today = cal.getTime();
cal.add(Calendar.YEAR, 1); // to get previous year add 1
cal.add(Calendar.DAY_OF_MONTH, -1); // to get previous day add -1
Date expiryDate = cal.getTime();
System.out.println("today is --> "+today);
System.out.println("expiryDate is --> "+expiryDate);
OutPut Aujourd'hui est -> ven déc 01:10:52 GMT + 05:30 2017
expiryDate est le -> vendredi 30 nov. 10:10:52 GMT + 05:30 2018
la date d'aujourd'hui est le -> vendredi 01 déc 10:10:52 GMT + 05:30 2017
expiryDate est le -> vendredi 30 nov. 10:10:52 GMT + 05:30 2018