web-dev-qa-db-fra.com

stocker la date actuelle et la date à 1 an du courant en java

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?

31
bardockyo

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

84
iTech

tl; dr

LocalDate.parse( 
    "2/18/2013" , 
    DateTimeFormatter.ofPattern ( "M/d/uuuu" ) 
).plusYears( 1 )

Détails

La réponse acceptée est correcte, mais obsolète depuis Java 8.

Java.time

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.

Rembourré Zéro

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


À propos de Java.time

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 _.

6
Basil Bourque

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);
5
PermGenError
 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

 enter image description here

0
Keshav Gera