# Dauer (Tage, Stunden, Minuten, Sekunden) berechnen



## Petra86 (5. Sep 2007)

Hi zusammen!

Ich stecke zur Zeit mit folgenden Problem fest:
Auf einer Oberfläche gibt ein Benutzer ein Startdatum mit Uhrzeit (z. B.: 8.7.2007 14:30:09)
sowie ein Enddatum (z. B.: 19.7.2007 12:09:45) in JTextFields ein.
Aus diesen Angaben soll die Zeitdifferenz (Angabe in Tagen, Stunden, Minuten, Sekunden)
berechnet und in einem weiteren Textfeld angezeigt werden.
Ich habe schon Diverses ausprobiert, bei direkter Eingabe in den Code funktioniert
die Berechnung: 



```
...
GregorianCalendar start = new GregorianCalendar(2007, 9, 1, 19, 30, 44);
GregorianCalendar end = new GregorianCalendar(2007,9,3,20,45,55);
     diff = end.getTimeInMillis() - start.getTimeInMillis();
    double diff1 = diff / 1000 / 60 / 60 / 24;
    double diff2 = diff1 % 1 * 24;
    double diff3 = diff2 % 1 * 60;
    double diff4 = diff3 % 1 * 60;
     tage = (int)diff1;
     stunden = (int)diff2;
    minuten = (int)diff3;
    sekunden = (int)diff4;
    //Output test console:
    System.out.println("difference: "+tage + " days, "+stunden + " : "+ minuten +
    		" : "+sekunden);
...
```

Aber ich bekomme es irgendwie nicht hin, dass die Eingaben des Benutzers
zur Berechnung genommen werden (über die Textfelder).
Also: Wie lese ich die Felder so aus, dass ich sie zur Berechnung einsetzen kann?
Was ist mit den führenden Nullen (z. B. 04, 09)?

Wäre super, wenn Ihr mir helfen könntet!
Schon mal vielen Dank!!!


----------



## P3AC3MAK3R (5. Sep 2007)

Folgender Link könnte weiterhelfen:

http://forum.java.sun.com/thread.jspa?threadID=304692&messageID=1212686

(gefunden mit http://www.google.de/search?hl=de&q=java+cast+string+to+date&btnG=Google-Suche&meta=)


----------



## The_S (5. Sep 2007)

Naja, du musst es halt parsen. Kommt drauf an in welchem Format die Daten eingegeben werden. Kannst dir mal SimpleDateFormat anschauen. Oder du verwendest gleich eine externe lib zur Datumsauswahl (oder einen JSpinner mit enstprechenden model).


----------



## SlaterB (5. Sep 2007)

nebenbei: 
dein Code soll funktionieren? da geht recht wenig, nur schnell zusammenkopiert/ gekürzt ohne zu testen?


```
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        GregorianCalendar start = new GregorianCalendar(2007, 9, 1, 19, 30, 44);
        GregorianCalendar end = new GregorianCalendar(2007, 9, 3, 20, 45, 55);
        long diff = end.getTimeInMillis() - start.getTimeInMillis();
        double diff1 = diff / 1000 / 60 / 60 / 24;
        double diff2 = diff1 % 1 * 24;
        double diff3 = diff2 % 1 * 60;
        double diff4 = diff3 % 1 * 60;
        int tage = (int)diff1;
        int stunden = (int)diff2;
        int minuten = (int)diff3;
        int sekunden = (int)diff4;
        // Output test console:
        System.out.println("difference: " + tage + " days, " + stunden + " : " + minuten + " : " + sekunden);
    }
}
```
->
difference: 2 days, 0 : 0 : 0


----------



## Petra86 (5. Sep 2007)

also, bei mir kommt was anderes raus. 
Ich habe die Beispielwerte noch mal verändert, 

z. B. 

```
...
GregorianCalendar start = new GregorianCalendar(2007, 9, 1, 19, 30, 44);
GregorianCalendar end  = new GregorianCalendar(2007, 9, 3, 20, 25, 42);
....
```


da kommt bei mir raus:

difference: 2 days, 0 : 54 : 58


----------



## SlaterB (5. Sep 2007)

weil du ein anderes Programm hast,
allein x % 1 macht keinen Sinn, ergibt immer 0,

und wenn man sich mal überlegt, dass diff1  die Anzahl der Tage enthält (2),
wie willst du dann aus der Zahl 2 mit
 double diff2 = diff1 % 1 * 24; 
die Stunden berechnen?
wie soll die Zahl 2 die Information über die Stunden enthalten?

ist keine Kritik oder so, ist nur Verwunderung, warum du so ein ganz anderes Programm postest also du selber offensichtlich verwendest


----------

