PROBLEM: Zeitrechner (Uhrzeiten voneinander abziehen)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PROBLEM: Zeitrechner (Uhrzeiten voneinander abziehen)

    Hallo!
    Ich möchte mir einen Arbeitszeitrechner erstellen. Dazu habe ich 2 Felder, in die ich einmal die gekommen-Zeit im Format hh:mm eintrage, und ein Feld, in das ich die gegangen-Zeit eintrage (ebenfalls im Format hh:mm). Anschließend will ich die gegangen-Zeit minus die tägl. Soll-Arbeitszeit minus die gekommen-Zeit rechnen, um so an den Tagessaldo zu kommen.
    Nun zu meinem Problem: Die eingegebenen Daten sind Strings. Wie kann ich diese in Zeiten umwandeln, bzw. wie kann ich 2 Uhrzeiten voneinander abziehen? Wäre für einen kleinen Code-Ausschnitt sehr dankbar. Ich habe nämlich absolut keinen Plan, wie ich das machen soll.
    Vielen Dank schonmal, schöne grüße Rudi
  • Hi,
    generell kannst du dafür die klasse Date verwenden
    String nach Integer casten und dann ab in den konstruktor:

    http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html
    Date

    @Deprecated
    public Date(int year,
    int month,
    int date,
    int hrs,
    int min)

    Deprecated. As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date, hrs, min) or GregorianCalendar(year + 1900, month, date, hrs, min).

    Allocates a Date object and initializes it so that it represents the instant at the start of the minute specified by the year, month, date, hrs, and min arguments, in the local time zone.

    Parameters:
    year - the year minus 1900.
    month - the month between 0-11.
    date - the day of the month between 1-31.
    hrs - the hours between 0-23.
    min - the minutes between 0-59.


    Mit folgendem findest du dann die differenz in millisekunden heraus

    Quellcode

    1. long diff = start.getTime() - end.getTime();


    Die Millisekunden kannst du dann wieder in eine ordentliche Zeitausgabe umwandeln
    Hier ein Code für Sekunden:
    http://www.easy-coding.de/java-sekunden-in-zeit-t413.html
  • Klappt leider immer noch nicht .-/

    So, habe das jetzt mal ausprobiert: Also irgendwie klappt die Sache immer noch nicht so ganz. Wenn ich jetzt aus den Sekunden, die hierbei rauskommen :

    Date komm = new Date(2006, 11, 09,stdKomm, minKomm);
    Date gehe = new Date(2006, 11, 09, stdGehen, minGehen );
    long diff = gehe.getTime() - komm.getTime();

    diese Funktion anwende:

    long stunde = diff / 3600;
    long minute = diff / 60 - (stunde*60);

    kommen ziemlich seltsame Zahlen raus. Die ergeben irgendwie keinen Sinn. Wenn meine Kommen-Zeit 06:00 und meine Gehen-Zeit 14:05 ist, kommen diese Zaheln da raus:

    stunde = 8083
    minute = 20

    Wenn ich als Kommen-Zeit 06:00 und Gehen-Zeit 08:00 eingebe, kommt das raus:

    stunde = 2000
    minute = 0

    Dies finde ich auch recht seltsam. Ich hoffe mir kann jemand helfen, bzw. sagen was ich Dummi falsch mache :-/

    Schöne Grüße
    Rudi
  • Ups, danke! das wusste ich nicht :(
    Also für die Stunden krieg ich das hin, nur wenn ich die minuten noch durch 1000 teile, kommt da wieder was ganz komisches raus*g*
    Wie müsste der Code dann für die Minuten aussehen? Weißt du das zufällig?

    long stunde = diff / 3600 / 1000; //das hier ist schon verbessert
    long minute = diff / 60 - (stunde*60); //wie muss ich das hier machen?

    Auf jeden Fall schonmal danke für die Hilfe bis hier hin!!