Minuten aus Uhrzeiten berechnen

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.
troubl6
User
Beiträge: 5
Registriert: Dienstag 5. August 2008, 17:07
Wohnort: Wien

Minuten aus Uhrzeiten berechnen

Beitragvon troubl6 » Dienstag 5. August 2008, 17:20

Hallo!
Bin Anfänger und würde gern aus zwei angegebenen Uhrzeiten (input: 16:30 und 18:30), die Minuten berechnen - also 120 Minuten. Wie könnte das gelöst werden?
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Beitragvon Andyh » Dienstag 5. August 2008, 17:41

Hallo

Code: Alles auswählen

zeit1 = 16.50
zeit2 = 18.50
div = (zeit2 - zeit1) *60
print div


Geht sicher noch besser, aber für den anfang.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!

Code: Alles auswählen

import sys

if sys.platform == "win32":
    print "this program only runs on operating systems!!!"
    sys.TotalError()
troubl6
User
Beiträge: 5
Registriert: Dienstag 5. August 2008, 17:07
Wohnort: Wien

Beitragvon troubl6 » Dienstag 5. August 2008, 17:58

Vielen Dank - es funktioniert - ABER wenn der User im Interface die Stunden und Minuten entsprechende der Konvention mit einem ":" trennt ergibt sich eine Fehlermeldung. :D
lunar

Beitragvon lunar » Dienstag 5. August 2008, 18:43

http://docs.python.org/dev/library/datetime.html

Da stellt alles, was du wissen musst.
troubl6
User
Beiträge: 5
Registriert: Dienstag 5. August 2008, 17:07
Wohnort: Wien

Beitragvon troubl6 » Dienstag 5. August 2008, 21:25

Wenn es für einen Anfänger so einfach wäre aus den Hilfe-Docs oder Büchern eine Antwort auf seine Frage zu bekommen, könnte man sich das Forum sparen! Leider helfen mir die 29 Seiten nicht wirklich weiter bei meinem Problem - es liegt sicher an mir :roll: aber wenn man beginnt sich mit dem programmieren zu beschäftigen und bestimmte Probleme für ein Projekt lösen möchte und noch nicht den Durchblick hat sind Meldungen wie Deine mein lieber "LUNAR" ziemlich entbehrlich!
lunar

Beitragvon lunar » Dienstag 5. August 2008, 21:44

Code: Alles auswählen

>>> from datetime import datetime
>>> first_time = datetime.strptime('12:00', '%H:%M')
>>> second_time = datetime.strptime('11:30', '%H:%M')
>>> delta = first_time - second_time
>>> delta.seconds
1800
>>> delta.seconds / 60
30
troubl6
User
Beiträge: 5
Registriert: Dienstag 5. August 2008, 17:07
Wohnort: Wien

Beitragvon troubl6 » Dienstag 5. August 2008, 21:53

Vielen Dank - und entschuldige meine vorherige Antwort - aber es erinnerte mich an meine alten Lehrer, die immer meinten "zuerst nachlesen" und dann meist keine weitere Antwort gaben (manche wussten vielleicht auch keine) und v.a. Ihre Erfahrung nicht weitergaben - ich bin ein Frischling was Programmierung betrifft und es ist leider in all den vielen Büchern und online-Hilfen nicht immer einfach Beispiele für anstehende Probleme zu finden.
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Beitragvon yipyip » Dienstag 5. August 2008, 22:21

Hallo troubl6,
hier eine fuer Dich vielleicht angemessenere
Problemloesung:

Code: Alles auswählen

t1 = '16:30'
t2 = '18:20'

def get_minutes(hm_string):
 
  hours, minutes = tuple(map(int, hm_string.split(':')))
  return hours * 60 + minutes

mdiff = get_minutes(t2) - get_minutes(t1)
print '%s - %s = %d' % (t2, t1, mdiff)


# etwas einsteigerfreundlicher:

def get_minutes_2(hm_string):

  hm_list = hm_string.split(':')
  hours = int(hm_list[0])
  minutes = int(hm_list[1])
  return hours * 60 + minutes

mdiff = get_minutes_2(t2) - get_minutes_2(t1)
print '%s - %s = %d' % (t2, t1, mdiff)

Nur damit du auf den Geschmack kommst...
:wink:
yipyip
troubl6
User
Beiträge: 5
Registriert: Dienstag 5. August 2008, 17:07
Wohnort: Wien

Beitragvon troubl6 » Dienstag 5. August 2008, 22:46

zum Lösungsansatz von Lunar folgende Fehlermeldung:

first_time = datetime.strptime('12:00', '%H:%M')
AttributeError: type object 'datetime.datetime' has no attribute 'strptime'

zur Lösung von yipyip:

man muss nun die Zeit unter " " stellen sonst bekommt man eine Fehlermeldung. Abgesehen von einem Abfangen von Ausnahmen mit try - gibt es eine Lösung die eine unabhängige Usereingabe möglich macht - also egal ob der Dummy vor der Applikation "12:30", 12:30, 12.30 oder 1230 eingibt???
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Dienstag 5. August 2008, 22:51

[code=]strptime( date_string, format)

Return a datetime corresponding to date_string, parsed according to format.
This is equivalent to datetime(*(time.strptime(date_string, format)[0:6])).
ValueError is raised if the date_string and format can't be parsed by
time.strptime() or if it returns a value which isn't a time tuple.
New in version 2.5. [/code]=> auf Python 2.5 updaten!
MfG
HWK
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Mittwoch 6. August 2008, 05:51

troubl6 hat geschrieben: Abgesehen von einem Abfangen von Ausnahmen mit try - gibt es eine Lösung die eine unabhängige Usereingabe möglich macht - also egal ob der Dummy vor der Applikation "12:30", 12:30, 12.30 oder 1230 eingibt???


Sicher. Aber zumindest die letzte Variante wirft Fragen auf:
Kann man sich darauf verlassen, dass der "Dummy" die Stunden und Minutenangaben immer zweistellig eingibt und ggf. mit Nullen auffüllt?
Ansonsten gäbe es z.B. bei 115 ein Problem: 11:05 Uhr oder 1:15 Uhr?

Geht man davon aus, dass er zumindest Minuten auffüllt, dann wäre 115 immer 1:15 Uhr und dann könnte man es auch so machen:

Code: Alles auswählen

t1 = "112"
t2 = "14:03"

def min(t):
    t = t.replace(".",":")
    if not ":" in t:
        t = t[:-2]+":"+t[-2:]
    h, min = map(int,t.split(":"))
    return h*60+min

print min(t2)-min(t1)
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Beitragvon mkesper » Mittwoch 6. August 2008, 07:48

Wenn er 115 eingibt, sollte das Programm einen Fehler anzeigen, dagegen aber : und . zulassen.
Mal so ganz banal gecodet:

Code: Alles auswählen

hhmm = '18:25'.split(':')
if len(hhmm) < 2:
    hhmm = hhmm.split('.')
if len(hhmm) < 2:
    print "Bitte eine gültige Uhrzeit eingeben (hh:mm oder hh.mm)."
lunar

Beitragvon lunar » Mittwoch 6. August 2008, 09:48

In diesem Fall wäre dateutil.parser einen Blick wert.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Beitragvon birkenfeld » Mittwoch 6. August 2008, 16:34

mkallas hat geschrieben:Mal so ganz banal gecodet:

Code: Alles auswählen

hhmm = '18:25'.split(':')
if len(hhmm) < 2:
    hhmm = hhmm.split('.')
if len(hhmm) < 2:
    print "Bitte eine gültige Uhrzeit eingeben (hh:mm oder hh.mm)."

Mal so ganz banal falsch :)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Mittwoch 6. August 2008, 18:25

Meinst du das?

Code: Alles auswählen

>>> len(":".split(":"))
2

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder