Odejmowanie dat

0

Witajcie,
jestem początkujący, uczę się sam i napotkałem problem, który próbuję rozwalić i trochę mnie blokuje. Pewnie okaże się, że jest to banalne. Chodzi mi o odejmowanie daty by wynik był w dniach.
Ogólnie użytkownik wprowadza datę w postaci: 2015-01-10, potem wprowadza drugą datę w takiej samej postaci 2015-01-15. Chodzi mi o to by program na końcu podał różnicę dni: czyli 5. Macie może jakieś sugestie? Próbowałem podziałać coś z SimpleDateFormat, ale ni hu hu mi nie wychodzi. Może mi ktoś coś doradzić?

1
LocalDate localDate1 = LocalDate.of(2015, 01, 10);
LocalDate localDate2 = LocalDate.of(2015, 01, 15);
long days = ChronoUnit.DAYS.between(localDate1, localDate2);
0

teraz pytanie Joda Time czy Java 8 ?

0

Java 8. Popatrzę z tym LocalDateTime, przy czym kwestia tego czy dane mogą być w jakiś sposób wpisane np przez konsole.

0

@Rastrel możesz parsować przecież stringi do tego LocalDateTime / LocalDate

0

Udało się wszystko z tym, że nie potrafię wyświetlić w etykietce różnicy dat. Ktoś pomoże?
Chodzi o ten element: lWyswietl.setText(String.valueOf(days));

public void actionPerformed(ActionEvent e) 
    {
    input = tDataPoczatkuOchrony.getText();
    input1= tDataSprzedazy.getText();

    DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy");
        LocalDate date = LocalDate.parse(input, DATE_FORMAT);
        LocalDate date1 = LocalDate.parse(input1, DATE_FORMAT);
        long days = ChronoUnit.DAYS.between(date1, date);
        lWyswietl.setText(String.valueOf(days));

    }   

pojawia się

Exception in thread "AWT-EventQueue-0" java.time.format.DateTimeParseException: Text '10-12-2015 ' could not be parsed, unparsed text found at index 10
    at java.time.format.DateTimeFormatter.parseResolved0(Unknown Source)
    at java.time.format.DateTimeFormatter.parse(Unknown Source)
    at java.time.LocalDate.parse(Unknown Source)
    at Calc.actionPerformed(Calc.java:85)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
1

OMG przecież błąd jest w ZUPEŁNIE innym miejscu niż to o które pytasz. Masz po prostu spacje za datą w tym inpucie. Zrób input.trim() i input1.trim() (btw świetne nazwy zmiennych, szacun)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0