2016-11-24 2 views
0

Die Antwort ist wahrscheinlich nein, aber ich hoffe, es macht Ihnen nichts aus, wenn ich nur um sicher sein möchte. Können datetime.date Objekte irgendwie so verwendet werden?Gibt es eine Möglichkeit, datetime.date ohne ein Jahr zu verwenden?

import datetime as dt 
is_summer = dt.date(month=7, day=1) <= dt.date.today() < dt.date(month=8, day=31) # wrong! 

Derzeit bin ich die Umwandlung der datetime.date Objekte (month, day) Tupeln, wo immer ich „jedes Jahr“ bedeuten. Ich überlege, datetime komplett aufzugeben und nur die Tupel überall zu verwenden.

+0

Wie wäre es mit dem Schreiben einer Funktion 'my_date()', die ein 'Tupel' zurückgibt? – ettanany

+0

@ettanany Wie ich geschrieben habe, überlege ich, alle Daten als Tupel darzustellen. Ich habe gerade erwartet, die benötigte Funktionalität in einem Modul zu finden, das verspricht: _ "Das datetime-Modul bietet Klassen für die einfache und komplexe Bearbeitung von Daten und Zeiten" _ – VPfB

+0

Passt @ Alex 'Antwort zu Ihren Bedürfnissen? Beachten Sie, dass Sie auch die eingebaute Funktion "date" überschreiben können, wenn Sie sie weiterhin mit demselben Namen verwenden möchten. – ettanany

Antwort

1

Ihre aktuelle Methode klingt ziemlich gut. Sie könnten auch tun:

def date_this_year(**kwargs): 
    return dt.date(year=dt.date.today().year, **kwargs) 

is_summer = date_this_year(month=7, day=1) <= dt.date.today() < date_this_year(month=8, day=31) 
+0

Ihr Code scheint gut lesbar zu sein, +1 für diese Idee. Es ist jedoch darauf zu achten, dass date_this_year-Ergebnisse nicht gespeichert und wiederverwendet werden, da sie date_last_year werden könnten. Deshalb hilft es mir nicht viel - kann aber anderen Lesern helfen. – VPfB

Verwandte Themen