Ich habe den folgenden Code und erhalte den obigen Fehler. Da ich neu in Python bin, habe ich Probleme, die Syntax hier zu verstehen und wie ich den Fehler beheben kann:
if not start or date < start: start = date
Ich habe den folgenden Code und erhalte den obigen Fehler. Da ich neu in Python bin, habe ich Probleme, die Syntax hier zu verstehen und wie ich den Fehler beheben kann:
if not start or date < start: start = date
Antworten:
Es gibt eine datetime.date()Methode zum Konvertieren von Datum / Uhrzeit in Datum.
Um die entgegengesetzte Konvertierung durchzuführen, können Sie diese Funktion verwenden datetime.datetime(d.year, d.month, d.day)
datetime.datetime(d.year, d.month, d.day)
Mit dieser datetime.datetime.combineMethode können Sie das Datumsobjekt mit dem Datum / Uhrzeit-Objekt vergleichen und dann das konvertierte Objekt mit dem anderen Datum / Uhrzeit-Objekt vergleichen.
import datetime
dt1 = datetime.datetime(2011, 03, 03, 11, 12)
day = datetime.date(2011, 03, 02)
dt2 = datetime.datetime.combine(day, datetime.time(0, 0))
print dt1 > dt2
Angenommen, der Start ist eine Datums- / Uhrzeitangabe. Verwenden Sie diese wie folgt:
if not start or date < start.date(): start = date
Ich glaube nicht, dass es in Python notwendig ist, Datum in Datum / Uhrzeit umzuwandeln , da Sie einfach das Gegenteil tun und vergleichen können.
Oder Sie haben andere Methoden, um eine neue Datums- und Uhrzeitangabe zu erstellen, indem Sie das Datum für die Konvertierung und die Uhrzeit um 00:00 Uhr verwenden.
DateFieldmit datetime.now()und habe ihn behoben, indem ich einfach wie folgt .date()zum Ende hinzugefügt habe: datetime.now().date()Dies ist eine sehr gute, nicht überkomplizierte Lösung
Ich habe jedoch den obigen Fehler während der Verwendung erhalten pandas, da dies die date_columnZeichenfolge war, die ich viel Zeit verschwendet habe, ohne zu bemerken, dass ich das Falsche formatiert habe:
# didnt work
df[(df.date_column > parse_datestr('2018-01-01'))]
# works
df['date_column'] = pd.to_datetime(df['date_column'])
df[(df.date_column > '2018-01-01') & (df.date_column < '2018-02-28')]
Ihre Variablen Start und Datum sind von unterschiedlichem Typ, denke ich. Eins ist eine Datumszeit und eins ist ein Datum. Möglicherweise müssen Sie mehr Code anzeigen, um angemessene Hilfe zu erhalten.
Aber sehen Sie sich das an: http://docs.python.org/library/datetime.html#available-types
Es zeigt Ihnen, dass datetime.datetime Attribute wie Tag, Monat und Jahr hat, genau wie datetime.date.
Dieses Problem tritt auf, wenn Sie versuchen, ein Datumsfeld ( DateField) und ein Datum / Uhrzeit-Feld ( DateTimeField) zu vergleichen.
Die Lösung wäre zu überprüfen, wo Sie die Felder in Ihren Modellen definiert haben, und sicherzustellen, dass die Typen einheitlich sind.
Ich würde vorschlagen, dass Sie alle DateFielddurch ersetzenDateTimeField .