Dauer (Tage, Stunden, Minuten, Sekunden) berechnen

Status
Nicht offen für weitere Antworten.

Petra86

Mitglied
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:


Code:
...
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!!!
 
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).
 
nebenbei:
dein Code soll funktionieren? da geht recht wenig, nur schnell zusammenkopiert/ gekürzt ohne zu testen?

Code:
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
 
also, bei mir kommt was anderes raus.
Ich habe die Beispielwerte noch mal verändert,

z. B.
Code:
...
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
 
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 😉
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben