Announcement

Collapse
No announcement yet.

Zeitberechnung in Java

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeitberechnung in Java

    Hallo,
    ich hab folgendes Problem. Ich lese aus einer Datenbank (Access^^) tägliche Arbeitszeiten aus. Es wird momentan berechnet Ende - Anfang, somit erhalte ich schon korrekter Weise meine täglichen Arbeitsstunden.
    Nun möchte ich ALLE Arbeitsstunden aufaddieren. Die Ausgabe soll natürlich in Stunden sein, sodass am Ende bspw 38 Stunden rauskommen.

    Anbei, ein wenig Code, so wie es momentan ausschaut - habe für die Zeitberechnung bisher Calendar- Objekte verwendet:

    Code:
    while (rs.next()) {
    		Beginn = rs.getString("Beginn").substring(11,16);
    		System.out.println("Arbeitsbeginn: "+Beginn);
    				
    		Ende = rs.getString("Ende").substring(11,16);
    		System.out.println("Arbeitsende: "+Ende);
    		
    		Arbeitsbeginn = Beginn.split(":");
    		Arbeitsende = Ende.split(":");
    					
    		c1.set(Calendar.HOUR, Integer.parseInt(Arbeitsbeginn[0]));
    		c2.set(Calendar.HOUR, Integer.parseInt(Arbeitsende[0]));
    		
    		if ( c1.getTimeInMillis() < c2.getTimeInMillis()) {
    			c3.set(Calendar.HOUR, Integer.parseInt(Arbeitsende[0]) - Integer.parseInt(Arbeitsbeginn[0]));
    			c3.set(Calendar.MINUTE, Integer.parseInt(Arbeitsende[1])-Integer.parseInt(Arbeitsbeginn[1]));
    				
    			System.out.println("gearbeitet: " +DateFormat.getTimeInstance(DateFormat.SHORT).format(c3.getTimeInMillis()));
    			System.out.println("");
    					
    			c4.set(Calendar.HOUR, c4.HOUR + c3.HOUR);
    			c4.set(Calendar.MINUTE, c4.MINUTE + c3.MINUTE);
    					
    			System.out.println("Gesamtarbeit: " +DateFormat.getTimeInstance(DateFormat.SHORT).format(c3.getTimeInMillis()));
    			System.out.println("");
    			System.out.println("");
    				}
    		if (c1.getTimeInMillis() > c2.getTimeInMillis()) {
    			c3.set(Calendar.HOUR, Integer.parseInt(Arbeitsende[0]) - Integer.parseInt(Arbeitsbeginn[0])-12);
    			c3.set(Calendar.MINUTE, Integer.parseInt(Arbeitsende[1])-Integer.parseInt(Arbeitsbeginn[1]));
    					
    			System.out.println("gearbeitet: " +DateFormat.getTimeInstance(DateFormat.SHORT).format(c3.getTimeInMillis()));
    			System.out.println("");
    					
    			c4.set(Calendar.HOUR, c4.HOUR + c3.HOUR);
    			c4.set(Calendar.MINUTE, c4.MINUTE + c3.MINUTE);
    			System.out.println("");
    			System.out.println("");
    					
    			System.out.println("Gesamtarbeit: " +DateFormat.getTimeInstance(DateFormat.SHORT).format(c3.getTimeInMillis()));
    				
    		}

  • #2
    Genau wie die SET Methode des Calendar Objektes arbeitet die GET Methode.

    Wenn du also die tgl. Arbeitszeit berechnet hast, den Wert der Stunden und Minuten in einen int schreiben und am Ende der Woche (der Berechnung für die Woche) hast du die wöchentl. Arbeitszeit
    Christian

    Comment


    • #3
      Hallo,
      so ähnlich hab ich das probiert, nur das Problem beim Kalendar --> der Tagumbruch nach 24h. Sprich wenn ich eine 39h Woche gearbeitet hab, bekomme ich 15 ausgegeben.
      Kann ich dem Kalendar beibringen hier nicht umzubrechen?

      Comment


      • #4
        Kann Access nicht selbst mit Zeitdaten rechnen?

        SELECT SUM (ende-begin) FROM arbeitszeit WHERE datum >= "Montag dingens" AND datum <= "Samstag foobar";

        Comment

        Working...
        X