Java - comment dois-je prendre date en entrée et être en mesure d'ajouter ou de soustraire ses jours/mois/années

0

La question

Je suis actuellement en utilisant ce code et je ne sais pas si il existe un moyen d'ajouter ou de soustraire la date à laquelle j'ai d'entrée avec Scanner(System.in)

Scanner scanner = new Scanner(System.in);
System.out.println("Date: ");
String date = scanner.next();
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date date2=null;
try {
    date2 = dateFormat.parse(date);
} catch (ParseException e) {
    e.printStackTrace();
}
date intellij-idea java
2021-11-21 02:51:00
2

La meilleure réponse

1

java.le temps

Ne jamais utiliser les classes héritées Date et SimpleDateFormat. Utilisez uniquement java.du temps des classes.

DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM/dd/uuuu" ) ;
LocalDate ld = LocalDate.parse( input , f ) ;

D'ajouter et de soustraire, appelez le plus… et minus… des méthodes.

LocalDate later = ld.plusDays( 3 ) ;
LocalDate earlier = ld.minusYears( 7 ) ;
2021-11-21 06:15:13

Dois-je toujours utiliser la classe scanner pour obtenir l'entrée
brae

@brae Oui, la partie de la lecture du code à la saisie de l'utilisateur est inchangé par rapport à la question. Seul le code de la réponse suppose que la variable contenant la chaîne de lecture du scanner est nommé input plutôt que de date.
Ole V.V.
0

Vous pouvez convertir les dates de LocalDate. Sa a plus de méthodes, comme plusYears(),plusMonths(),plusDays().

    // Date -> LocalDate
    private static LocalDate of(Date date) {
        Instant instant = date.toInstant();
        return instant.atZone(ZoneId.systemDefault()).toLocalDate();
    }
 
    // LocalDate -> Date
    private static Date of(LocalDate localDate) {
        Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
        return Date.from(instant);
    }
2021-11-21 03:14:08

Vos conversions sont correctes, mais l'OP est mieux aidé en n'utilisant pas la Date classe du tout et donc ne pas avoir besoin de conversions.
Ole V.V.

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................