Datum vergleichen

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
peddy
User
Beiträge: 121
Registriert: Montag 30. Juni 2008, 13:51

Hallo,

ich möchte nach Dateien, mit einem bestimmten Datum suchen:

Code: Alles auswählen

#!/usr/bin/env python

import os
import time

jahr = time.localtime().tm_year
monat = time.localtime().tm_mon
tag = time.localtime().tm_mday

filestat = time.localtime(os.stat('file6').st_mtime)
if filestat.tm_mday == tag and filestat.tm_mon == monat and filestat.tm_year == jahr:
    print 'Toll'
Der Code erscheint mir für die Aufgabe etwas umfangreich. Gibt es eine kürzere Alternative?
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

zwei Datumsobjekte lassen sich auch direkt vergleichen, du musst nicht Tag, Monat und Jahr einzeln machen.

Code: Alles auswählen

>>>import datetime
>>>t1 = datetime.datetime.now()
>>>t2 = datetime.datetime.now()
>>>t1 < t2
True
Gruß, noisefloor
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ergänzend sollte man die Methode `datetime.fromtimestamp` aus dem `datetime` Modul erwähnen. Damit kommst Du von der `os.stat` Rückgabe auf ein solches Objekt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
peddy
User
Beiträge: 121
Registriert: Montag 30. Juni 2008, 13:51

noisefloor hat geschrieben:Hallo,

zwei Datumsobjekte lassen sich auch direkt vergleichen, du musst nicht Tag, Monat und Jahr einzeln machen.

Code: Alles auswählen

>>>import datetime
>>>t1 = datetime.datetime.now()
>>>t2 = datetime.datetime.now()
>>>t1 < t2
True
Gruß, noisefloor
Ich möchte aber das Erstellungsdatum einer Datei mit dem heutigen (aktuellen) Datum vergleichen. Nur wenn Filedate == today ist, soll was gemacht werden.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ja und? Schau doch mal in die Doku zum `datetime`-Modul. Ich habe grad gesehen, dass man auch direkt ein `date`-Objekt aus einem Timestamp generieren kann:

Code: Alles auswählen

In [48]: datetime.date.fromtimestamp(os.stat("translator.py").st_mtime)
Out[48]: datetime.date(2011, 5, 25)

In [49]: datetime.date.today()
Out[49]: datetime.date(2011, 8, 25)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
peddy
User
Beiträge: 121
Registriert: Montag 30. Juni 2008, 13:51

Hyperion hat geschrieben:Ergänzend sollte man die Methode `datetime.fromtimestamp` aus dem `datetime` Modul erwähnen. Damit kommst Du von der `os.stat` Rückgabe auf ein solches Objekt.

Code: Alles auswählen

In [15]: x=os.stat('file1').st_atime
In [16]: datetime.datetime.fromtimestamp(x)
Out[16]: datetime.datetime(2011, 8, 25, 10, 51, 32, 361779)
Wie mache ich das, wenn ich nur Tag, Monat und Jahr vergleichen möchte. Ich habe noch keine Idee, wie ich die Uhrzeit ignorieren kann.
peddy
User
Beiträge: 121
Registriert: Montag 30. Juni 2008, 13:51

@all

Man seid ihr schnell. Bevor ich meine Frage gestellt habe, habt ihr schon eine Antwort gepostet.
peddy
User
Beiträge: 121
Registriert: Montag 30. Juni 2008, 13:51

Ok, danke noch mal für eure Geduld.

Code: Alles auswählen

#!/usr/bin/env python

import os
import datetime 

if datetime.date.fromtimestamp(os.stat('file1').st_mtime) == datetime.date.today():
    print 'Toll'
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

siehst, geht auch einfach. :-)

Gruß, noisefloor
Antworten