Zeitberechnung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Juchtefred

Mittwoch 22. September 2004, 14:01

Hey ich bin ganz neu in Pyton. :shock:

Habe jetzt die wundervolle Aufgabe, ein Zeiterfassungsprogramm zu schreiben.
Ich muss dafür die differenz zwischen zwei Zeiten berechnen. Brauch dafür kein Datum und auch keine sec. Nur Stunden und Min. Das Ergebnis sollte man in eine Datei schreiben können.(Später mal in ne DB)

Das müsste ja eigentlich keine große Sache sein! Aber ich habe die letzte Woche nur das Buch durchgelesen.

Freue mich über jede Hilfe

Danke :idea:
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Mittwoch 22. September 2004, 16:08

Hi Juchtefred,

am einfachsten geht das mit time aus dem Modul time.

Code: Alles auswählen

from time import time, sleep

start_time = time()
sleep(60*5) # mach 5 mintuen nichts
end_time = time()
dauer = end_time - time
stunden = int(dauer / (60 * 60))
minuten = int(dauer / 60) % 60
sekunden = int(dauer) % 60
ausgabe = "Es hat %i Stunden und %i Minuten gedauert" % (stunden, minunten)
print ausgabe # kann auch in eine Datei geschrieben werden.

Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Mittwoch 22. September 2004, 21:40

Juchtefred hat geschrieben:Hey ich bin ganz neu in Pyton. :shock:
Das haut uns nicht von den Socken, aber du bist trotzdem willkommen. ;)
Brauch dafür kein Datum und auch keine sec. Nur Stunden und Min.
Für normal arbeitende Menschen wird es ausreichen. Im IT Bereich ist es aber üblich, dass man sich auch die Nächte um die Ohren haut. :? Dann ist es ganz nützlich, wenn man auch das Datum in der Berechnung drin hat. Deshalb würde ich zum Modul datetime satt time tendieren. Sollte nicht schwieriger zu implementieren sein als time.

Dann mal frohes Schaffen.

Hans
Juchtefred

Donnerstag 23. September 2004, 06:34

Jo erstmal danke, dass das hier so schnell mit der Hilfe klappt.

:?: noch ne Frage,

Ist es auch möglich, das die Zeitdiffernz, die in eine GUI eingetragen wird, berechnen zu lassen?
Dort stehen ja dann Werte wie gearbeitet von 6.30 bis 16.30

danke
Juchtefred

Donnerstag 23. September 2004, 09:55

Also die Berechnung tut's. :lol:

Aber ich kann es nicht laufen lassen. :cry:
Woran könnte das denn nun wieder liegen?
Hier mal der Quelltext:

Code: Alles auswählen

print "Stechkarten-Programm"

 def berech(a,b,c,d):
    erg1=(a*3600)+(b*60)
 	erg2=(c*3600)+(d*60)
	c=c*3600
 	d=d*60 
 	erg3=erg2-erg1
 	if c>=43200 and d > 0:	
 		if c<44280 and d<1800:
 			z=erg2-43200
 			erg3=erg3-z
 			z=z/60
 		else:
 			erg3=erg3-1800
 	stunden= int(erg3/(60*60))
 	minuten= int(erg3 / 60)%60
 	ausgabe="Sie haben %i Stunden und %i Minuten gearbeitet!" % (stunden, minuten)
 	print ausgabe

z1 = input("Beginn in Stunden")
z2 = input("Beginn in Minuten")
z3 = input("Ende in Stunden")
z4 = input("Ende in Minuten")

berech(z1,z2,z3,z4)
Also am Einrückung dürfte es nicht liegen denke ich, das format hat sich nur beim Kopieren geändert.

Danke
Nils aka Ronnie

Donnerstag 23. September 2004, 10:10

Bei mir läuft es mit der richtigen Einrückung:

Code: Alles auswählen

print "Stechkarten-Programm" 

def berech(a,b,c,d): 
    erg1=(a*3600)+(b*60) 
    erg2=(c*3600)+(d*60) 
    c=c*3600 
    d=d*60 
    erg3=erg2-erg1 
    if c>=43200 and d > 0: 
        if c<44280 and d<1800: 
            z=erg2-43200 
            erg3=erg3-z 
            z=z/60 
        else: 
            erg3=erg3-1800 
            stunden= int(erg3/(60*60)) 
            minuten= int(erg3 / 60)%60 
            ausgabe="Sie haben %i Stunden und %i Minuten gearbeitet!" % (stunden, minuten) 
            print ausgabe 

z1 = input("Beginn in Stunden") 
z2 = input("Beginn in Minuten") 
z3 = input("Ende in Stunden") 
z4 = input("Ende in Minuten") 

berech(z1,z2,z3,z4) 
Gruß,
Ronnie
Nils aka Ronnie

Donnerstag 23. September 2004, 10:12

Nachtrag: Die Einrückung definiert wozu der else-Zweig gehört, bin mir nicht sicher ob es so richtig ist.
Juchtefred

Donnerstag 23. September 2004, 10:44

Danke,
ich habe es wohl mit dem einrücken doch nicht so bedacht.
kannst du mir vielleicht noch sagen wie ich das Ergebniss auch noch in einem kleinen Fenter ausgeben kann?

mit output :?: :?:
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Donnerstag 23. September 2004, 16:52

Hi. Indem du es in die Tags [python] quellcode [/python] setzt. Endlich mal jemand der auch danach fragt :D :D :D .
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Donnerstag 23. September 2004, 18:03

ich glaub Juchtefred meint in einer GUI, da hast Du eh schon einen Thread im Tkinterforum.

Dookie
[code]#!/usr/bin/env python
import this[/code]
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Freitag 24. September 2004, 17:30

ansonsten lohnt sich m.E. auch das DateTime-Modul von egenix.com.
Wirst es vermutlich bei DB-Anbindung sowieso brauchen.
Die Doku ist nicht dick aber brauchbar.

MfG, querdenker
Antworten