Gibt es eine integrierte Methode zum Konvertieren von a date
in a datetime
in Python, z. B. zum Abrufen der datetime
für Mitternacht des angegebenen Datums? Die entgegengesetzte Konvertierung ist einfach: datetime
hat eine .date()
Methode.
Muss ich wirklich manuell anrufen datetime(d.year, d.month, d.day)
?
.datetime()
Methode haben; Was albern ist, dass sie keine solche Methode haben.datetime.from_date()
Konstruktor.Antworten:
Sie können verwenden
datetime.combine(date, time)
; Für die Zeit erstellen Sie eindatetime.time
Objekt, das auf Mitternacht initialisiert wurde.quelle
datetime.combine(d, time())
time.time
oder etwas anderes als a übergebendatetime.time
.Es gibt verschiedene Möglichkeiten, obwohl ich glaube, dass die, die Sie erwähnen (und nicht mögen), die am besten lesbare ist.
und so weiter - aber im Grunde
date
hängen sie alle davon ab, Informationen aus dem Objekt angemessen zu extrahieren und sie wieder in den geeigneten ctor oder die geeignete Klassenfunktion für zu pflügendatetime
.quelle
datetime(d.year, d.month, d.day)
scheint viel lesbarer als die akzeptierte Antwortdatetime.combine(d, datetime.min.time())
.midnight = datetime.datetime.combine(d, datetime.time.min)
scheint sauberer (vorgeschlagen von@
larham1 )datetime(d.year, d.month, d.day)
offensichtlicher erscheint (eine Datumszeit ohne die Zeitkomponente). Es ist jedoch ein kleiner Punkt, und die Verwendung eines Variablennamens wie "Mitternacht" macht deutlich, was das Ergebnis ist, auch wenn der Leser nicht weiß, wasdatetime.time.min
darstellt.datetime(d.year, d.mont, d.day)
ist nicht nur offensichtlicher, es ist auch schneller .Die akzeptierte Antwort ist richtig, aber ich würde es vorziehen,
datetime.min.time()
sie nicht zu verwenden, da mir nicht klar ist, was sie genau tut. Wenn es für Sie offensichtlich ist, dann mehr Kraft für Sie. Das gleiche sehe ich auch intimetuple
Bezug auf die Methode und das Vertrauen in die Bestellung.Meiner Meinung nach ist der lesbarste und expliziteste Weg, dies zu tun, ohne sich darauf zu verlassen, dass der Leser mit der
datetime
Modul-API sehr vertraut ist:Das ist meine Meinung zu "explizit ist besser als implizit".
quelle
d2dt = lambda date: datetime(year=date.year, month=date.month, day=date.day)
On-Liner-Funktion dieser Antwort.datetime
Zeitzone kennen. In diesem Fall können Sie beispielsweiseimport pytz
hinzufügentzinfo=pytz.timezone('Europe/London')
.Sie können den
date.timetuple()
Operator method und entpacken*
.quelle
datetime.combine
über @ kiamlalunos Antwort herausgefunden habe. Ich denke, es ist ziemlich pythonisch, besonders wenn man bedenkt, dass das Konstruieren einesdatetime.time
Objekts wahrscheinlichdatetime.time(*map(int,"H:M:S".split(":")))
sowieso so aussieht ...Heute, im Jahr 2016, denke ich, dass pandas Timestamp die sauberste Lösung bietet:
Der Zeitstempel ist das Pandas-Äquivalent von Datum / Uhrzeit und in den meisten Fällen austauschbar. Prüfen:
Aber falls Sie wirklich eine Vanille-Datumszeit wollen, können Sie trotzdem Folgendes tun:
Zeitstempel sind viel leistungsfähiger als Datumszeiten, unter anderem beim Umgang mit Zeitzonen. Tatsächlich sind Zeitstempel so mächtig, dass es schade ist, dass sie so schlecht dokumentiert sind ...
quelle
Eine Möglichkeit, von Datum zu Datum / Uhrzeit zu konvertieren, die noch nicht erwähnt wurde:
quelle
Sie können easy_date verwenden , um es einfach zu machen:
quelle
Wenn Sie etwas schnelles benötigen, erhalten
datetime_object.date()
Sie ein Datum für ein Datum / Uhrzeit-Objekt.quelle
date
zudatetime
.datetime
hat eine.date()
Methode. , kühne Betonung meiner.Ich bin ein Neuling in Python. Aber dieser Code hat bei mir funktioniert und die angegebene Eingabe, die ich gebe, in datetime konvertiert. Hier ist der Code. Korrigiere mich, wenn ich falsch liege.
quelle
datetime.date()
Objekt, keine Zeichenfolge .