Tage zwischen zwei Daten 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.
Antworten
Benutzeravatar
pywald
User
Beiträge: 45
Registriert: Mittwoch 6. Januar 2021, 15:51

Hallo,
Ich habe eine Frage: wie berechnet man die Tage zwischen zwei Daten?
Ich habe schon im Internet gesucht doch nichts passendes gefunden.
Am besten wäre es wenn es ein kurzer Code sein würde.
Danke schon mal im voraus.
pywald
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Indem man zwei datetime.date Objekte voneinander substrahiert.
Benutzeravatar
pywald
User
Beiträge: 45
Registriert: Mittwoch 6. Januar 2021, 15:51

Danke! Aber bei mir zeigt er immer noch eine Fehlermeldung an:
datum1 = datetime.strptime(datum1, "%d.%m.%y").date()
AttributeError: module 'datetime' has no attribute 'strptime'
Mein Code:

Code: Alles auswählen

datum1 = datetime.strptime(datum1, "%d.%m.%y").date()
datum2 = datetime.strptime(datum2, "%d.%m.%y").date()
tage = (datum1-datum2)
Hat noch jemand eine Idee?

Danke

pywald
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@pywald: Es gibt das Modul `datetime` und da drin die Klasse `datetime`. Du verwendest hier das Modul anstelle der Klasse. Du musst `strptime()` auf der Klasse aufrufen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das Modul hat das ja auch nicht. Die Klasse datetime hat das. Also

Code: Alles auswählen

import datetime
datum1 = "11.12.2020"
print(datetime.datetime.strptime(datum1, "%d.%m.%Y"))
Achtung: der Formatstring war zumindest fuer mein Datum falsch, da muss es ein grosser Y sein!
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

einfach mit date-Objekten rechnen:

Code: Alles auswählen

>>> from datetime import date
>>> d1 = date(2021, 1, 1)
>>> d2 = date.today()
>>> delta = d2-d1
>>> delta
datetime.timedelta(days=30)
>>> 
Geht aber natürlich auch mit datetime:

Code: Alles auswählen

>>> from datetime import datetime
>>> d3 = datetime(2021, 1, 1)
>>> d4 = datetime.today()
>>> delta2 = d4-d3
>>> delta2
datetime.timedelta(days=30, seconds=43656, microseconds=968295)
>>> 
Gruß, noisefloor
Benutzeravatar
pywald
User
Beiträge: 45
Registriert: Mittwoch 6. Januar 2021, 15:51

Vielen Dank für all die Antworten! Ihr habt mir sehr weitergeholfen :)


pywald
Benutzeravatar
pywald
User
Beiträge: 45
Registriert: Mittwoch 6. Januar 2021, 15:51

Eine frage hätte ich doch noch: Warum zeigt der Python Interpreter hier bei der Umwandlung eine Fehlermeldung an?
Die Fehlermeldung:
datum1 = datetime.strptime(datum, "%d-%m-%y").date()
File "C:\Program Files (x86)\Python38-32\lib\_strptime.py", line 568, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "C:\Program Files (x86)\Python38-32\lib\_strptime.py", line 352, in _strptime
raise ValueError("unconverted data remains: %s" %
ValueError: unconverted data remains: 21
Mein Code:

Code: Alles auswählen

datum1 = datetime.strptime(datum, "%d-%m-%y").date()
datum2 = datetime.strptime(day, "%d-%m-%y").date()
tage = (datum1-datum2)
pywald
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das habe ich dir schon beantwortet. Nochmal genau lesen.
Benutzeravatar
pywald
User
Beiträge: 45
Registriert: Mittwoch 6. Januar 2021, 15:51

Entschuldigung. Habe ich übersehen.
Antworten