Heute, im Jahr 2016, denke ich, dass die sauberste Lösung von Pandas Timestamp bereitgestellt wird:
from datetime import date
import pandas as pd
d = date.today()
pd.Timestamp(d)
Timestamp ist das Pandas-Äquivalent zu datetime und ist in den meisten Fällen mit diesem austauschbar. Prüfen:
from datetime import datetime
isinstance(pd.Timestamp(d), datetime)
Aber wenn Sie wirklich ein einfaches Datum wollen, können Sie das immer noch tun:
pd.Timestamp(d).to_datetime()
Zeitstempel sind sehr viel leistungsfähiger als Datumsangaben, unter anderem im Umgang mit Zeitzonen. Eigentlich sind Zeitstempel so mächtig, dass es schade ist, dass sie so schlecht dokumentiert sind...
218 Stimmen
Keine dumme Frage; Datumsobjekte sollten eine
.datetime()
Methode; dumm ist nur, dass sie eine solche Methode nicht haben.25 Stimmen
@Zags: oder
datetime.from_date()
Konstrukteur.15 Stimmen
Nein, es sollte nicht ein Datum ist eine Teilmenge von datetime (es ist sogar im Namen). Es ist eindeutig, was das Datum von einer datetime ist. Aber andersherum ist ein Datum ein Block von 24 Stunden (normalerweise), also kann es viele Datumszeiten haben. Welche Datumszeit würde aus einem Datum entstehen? Man kann nicht immer 00:00 nehmen, denn was ist, wenn es diese Zeit nicht gibt, z. B. weil die Sommerzeit sie übersprungen hat? Nicht so einfach#
7 Stimmen
@Dalore Die Sommerzeit liegt zwischen 1 und 2 Uhr morgens, um genau das von Ihnen beschriebene Problem zu vermeiden.
3 Stimmen
@zags es hängt alles von der Zeitzone Quelle und Ziel, können Sie eine Sommerzeit Änderung um 1 Uhr haben, aber das würde zu einer Mitternacht Änderung in einer anderen Zeitzone entsprechen. und wenn Sie programmieren, welche Zeitzone Sie verwenden? Sie könnten sehr gut am Ende versuchen, eine Zeit zu erhalten, die nicht existiert. Mein Standpunkt ist immer noch, dass das Hinzufügen einer Zeit zu einem Datum nicht einfach ist. Dann müssen Sie auch zu prüfen, ist Ihre neue datetime auch Zeitzone bewusst oder naiv.
0 Stimmen
Dumme Frage: Dieses Problem kann auftreten, wenn Sie Datum mit einem .date am Ende parsen, wie viele Beispiele in diesem Forum zeigen. Stattdessen überspringen Sie dieses .date() und Sie können direkt Datumsvergleiche durchführen wie: ''' import datetime.datetime def is_date_earlier_than_date(d1, d2, parse_format) d1_time_obj = datetime.strptime(d1, parse_format) d2_time_obj = datetime.strptime(d2, parse_format) return d1_time_obj < d2_time_obj '''
0 Stimmen
@dalore, würde nicht jede andere Methode, die verwendet wird, um eine datetime aus einem Datum zu konstruieren, das gleiche Problem haben?