Forum: PC-Programmierung Datum vergleichen in Python


von Thomas (Gast)


Lesenswert?

Hi,

ich habe ein festes Datum, jetzt möchte ich vergleichen ob das feste 
Datum in Vergangenheit ist oder in Zukunft.
1
date = "01.04.2016"
2
3
4
for j in date:
5
     if j <= time.strftime("%d.%m.%Y"):
6
            print ("j")
7
     if j >= time.strftime("%d.%m.%Y"):
8
            print ("n")

Das gibt mir das hier aus

j
n
j
j
n
j
n
j
n
n


Wie wäre das richtig?

von Lukas K. (carrotindustries)


Lesenswert?

Du machst aus deinem String ein datetime.date-Objekt: 
https://docs.python.org/3.5/library/datetime.html Das kannst du dann mit 
datetime.date.today() vergleichen.

von Kaj (Gast)


Lesenswert?

date ist bei dir ein String, und du gehst zeichen für zeichen durch.
Du willst aber eine Liste haben, und Element für Element durch gehen.
1
date = ["01.04.2016"]
2
3
for j in date:
4
    # do what ever

von Das glaube ich nicht, Tim! (Gast)


Lesenswert?

Er will mit Sicherheit keine Liste haben ...

Ansonsten noch so als Tip: Im Link von Lukas nach "strptime" suchen.

von Kaj (Gast)


Lesenswert?

Das glaube ich nicht, Tim! schrieb:
> Er will mit Sicherheit keine Liste haben ...
Ich denke schon, sonst macht seine for-Schleife naemlich keinen Sinn.

von Rolf M. (rmagnus)


Lesenswert?

Thomas schrieb:
> Hi,
>
> ich habe ein festes Datum, jetzt möchte ich vergleichen ob das feste
> Datum in Vergangenheit ist oder in Zukunft.
> date = "01.04.2016"

Na wenn das Datum fest ist, ist das doch ganz einfach: Der 01.04.2016 
ist in der Vergangenheit und wird es auch immer bleiben. Also ist eine 
Prüfung gar nicht notwendig. Oder was genau meinst du mit "festes 
Datum"?

> Das gibt mir das hier aus

Du prüfst jedes Zeichen deines Strings einzeln gegen den kompletten 
String mit dem aktuellen Datum. Generell kannst du mit einem 
Stringvergleich das Datum nicht vergleichen - zumindest nicht in diesem 
Format.

> Wie wäre das richtig?

So wie Thomas geschrieben hat.

Kaj schrieb:
> date ist bei dir ein String, und du gehst zeichen für zeichen durch.
> Du willst aber eine Liste haben, und Element für Element durch
> gehen.
>
> date = ["01.04.2016"]

Warum sollte er eine Liste aus einem Datum haben wollen?

Kaj schrieb:
> Das glaube ich nicht, Tim! schrieb:
>> Er will mit Sicherheit keine Liste haben ...
> Ich denke schon, sonst macht seine for-Schleife naemlich keinen Sinn.

Was aber genauso gut bedeuten kann, dass er eigentlich keine 
for-Schleife will.

von Anfänger (Gast)


Lesenswert?

date = "01.04.2016"


for j in date:
     if j <= time.strftime("%d.%m.%Y"):
            print ("j")
     if j >= time.strftime("%d.%m.%Y"):
            print ("n")

Falls das Datum der 01.04.2016 ist werden doch beide if-Schleifen 
erfüllt oder?

Da  "if j kleiner gleich..."
und "if j größer gleich..."

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.