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?
Minuten aus Uhrzeiten berechnen
Hallo
Geht sicher noch besser, aber für den anfang.
Gruß
Andyh
Code: Alles auswählen
zeit1 = 16.50
zeit2 = 18.50
div = (zeit2 - zeit1) *60
print div
Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys
if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
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 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!
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
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.
Hallo troubl6,
hier eine fuer Dich vielleicht angemessenere
Problemloesung:
Nur damit du auf den Geschmack kommst...
yipyip
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)
yipyip
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???
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???
Code: Alles auswählen
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.
MfG
HWK
Sicher. Aber zumindest die letzte Variante wirft Fragen auf: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???
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)
- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Wenn er 115 eingibt, sollte das Programm einen Fehler anzeigen, dagegen aber : und . zulassen.
Mal so ganz banal gecodet:
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)."
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Mal so ganz banal falschmkallas 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)."
Meinst du das?
Code: Alles auswählen
>>> len(":".split(":"))
2
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Eher das:
Code: Alles auswählen
>>> [].split('.')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'split'
Übrigens: Wenn man eine Zeitangabe in Minuten hat und daraus hh:mm machen möchte (analog für mm:ss), ist `divmod` eine schöne Sache:
Code: Alles auswählen
>>> minutes = 133
>>> '%sh %sm' % divmod(minutes, 60)
'2h 13m'