2016-10-31 2 views
0

In meiner Config Ich habeSpeichern von Terminen in Python-Konfigurationsdatei

SKIP_DATES = ['2016-02-11', '2016-02-13'] 

Dann in meinem Skript überspringen I

if dt.date() in config.SKIP_DATES: 
    print "Skipping date: {0}".format(dt.date()) 
    continue 

haben aber das wird nicht funktionieren, weil dt.date ein datetime.date ist object und config.SKIP_DATES ist eine Liste von 'string dates'.

Wie kann ich das umgehen?

Kann jemand einen besseren Namen für diesen Beitrag vorschlagen?

+0

Können Sie bitte die Ausgabe von print dt.date() geben? –

+0

dt.date(): 2016-02-11 – jono

Antwort

0

scheinen Ihre Daten im gleichen Format wie date.isoformat() zu sein:

date.isoformat() 
Return a string representing the date in ISO 8601 format, ‘YYYY-MM-DD’. 
For example, date(2002, 12, 4).isoformat() == '2002-12-04'. 

So könnten Sie tun:

if dt.date().isoformat() in config.SKIP_DATES: 
    print "Skipping date: {0}".format(dt.date()) 
    continue 

Beachten Sie, dass die String-Darstellung datetime.date die gleiche Funktion verwendet:

date.__str__() 
For a date d, str(d) is equivalent to d.isoformat(). 

Dies ist, warum print dt.date() gibt Ausgabe wie '2016-10-31'. Natürlich könnten Sie dann ein Set anstelle einer Liste zum Speichern Ihrer Skip-Daten verwenden.

+0

Danke. Genau danach war ich. – jono

0

Sie können Ihre dt Datetime-Objekt Zeichenfolge ändern:

from datetime import datetime 

date_object = datetime(2016, 2, 11) 
print(date_object.strftime("%Y-%m-%d")) % prints string: 2016-02-11 

Und dann überprüfen, ob seine im String Array Datum. Oder tu es anders.