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!!!
 

The_S

Top Contributor
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).
 
S

SlaterB

Gast
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
 

Petra86

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

SlaterB

Gast
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.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C mp3-Lied Dauer berechnen Allgemeine Java-Themen 1
eQuest Rekursion Dauer Allgemeine Java-Themen 6
G Datum letzte 7 tage Allgemeine Java-Themen 6
L Methoden Dateien älter als 30 Tage? Allgemeine Java-Themen 11
P [Joda Time] Jahr, Tage, Stunden... vergangen seit Zeitpunkt Allgemeine Java-Themen 9
L Anzahl der Tage eines Monats Allgemeine Java-Themen 3
A einzelne Tage als Datum ausgeben Allgemeine Java-Themen 6
M GregorianCalender Tage dazuzählen Allgemeine Java-Themen 2
J Alle Tage eines Jahres Allgemeine Java-Themen 2
G Log4J - Logs älter als 3 Tage löschen Allgemeine Java-Themen 5
T Anzahl Tage zwischen zwei Daten - Stunde fehlt? Allgemeine Java-Themen 2
2 Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 2
G Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 3
G Anzahl Tage in Datum umwandeln Allgemeine Java-Themen 13
L Anzahl Tage zwischen zwei Kalenderdaten Allgemeine Java-Themen 5
H Differenz Tage errechnen Allgemeine Java-Themen 2
O aktuelle Tage bis zum jahresende ermitteln Allgemeine Java-Themen 3
G Zum Datum 30 Tage oder 1 Monat hinzufügen Allgemeine Java-Themen 10
R Date Tage abziehen Allgemeine Java-Themen 3
M Datum Zeitdifferenz in Stunden umrechnen Allgemeine Java-Themen 4
S Methoden Stunden seit einem bestimmten Zeitpunkt Allgemeine Java-Themen 3
S Anzahl der Stunden in Excel Datei schreiben Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben