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.
Juchtefred

Zeitberechnung

Beitragvon 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:
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » 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: Alles auswählen

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

Re: Zeitberechnung

Beitragvon hans » 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

Beitragvon 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

Habs aber läuft nett

Beitragvon 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

Bei mir geht dein Programm

Beitragvon 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

Beitragvon 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

mm

Beitragvon 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

Beitragvon Milan » 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 .
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 23. September 2004, 18:03

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

Dookie

Code: Alles auswählen

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

Beitragvon querdenker » 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

Wer ist online?

Mitglieder in diesem Forum: Baidu [Spider]