Java - cum fac data de intrare și de a fi capabil de a adăuga/scădea sale zile/luni/ani

0

Problema

Eu sunt în prezent, folosind acest cod și nu știu dacă există o modalitate de a adăuga sau scădea de la data la care am intrare cu 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

Cel mai bun răspuns

1

java.timp

Nu utilizați niciodată moștenirea clase Date și SimpleDateFormat. Utilizați numai java.timpul clase.

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

Pentru a adăuga și scădea, sunați la plus… și minus… metode.

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

Ar trebui să nu mai utilizați scanerul de clasă pentru a obține de intrare
brae

@brae Da, partea de citire a codurilor de utilizator de intrare este neschimbată de întrebare. Doar codul în răspunsul presupune că variabila care deține șir citit de la scaner este numit input mai degrabă decât date.
Ole V.V.
0

Puteți converti Data la LocalDate. A, plus metode, cum ar fi 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

Conversiile sunt corecte, dar OPERAȚIUNEA este mai bine ajutat de nu folosesc Date clasa la toate și, prin urmare, nu au nevoie de conversii.
Ole V.V.

În alte limbi

Această pagină este în alte limbi

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