Ich habe zwei verschiedene Daten und möchte den Unterschied in Tagen zwischen ihnen wissen. Das Format des Datums ist JJJJ-MM-TT.
Ich habe eine Funktion, die eine bestimmte Nummer zu einem Datum hinzufügen oder subtrahieren kann:
def addonDays(a, x):
ret = time.strftime("%Y-%m-%d",time.localtime(time.mktime(time.strptime(a,"%Y-%m-%d"))+x*3600*24+3600))
return ret
Dabei ist A das Datum und x die Anzahl der Tage, die ich hinzufügen möchte. Und das Ergebnis ist ein anderes Datum.
Ich benötige eine Funktion, bei der ich zwei Daten angeben kann und das Ergebnis ein int mit Datumsunterschied in Tagen ist.
Antworten:
Verwenden Sie
-
diese Option , um den Unterschied zwischen zweidatetime
Objekten zu ermitteln und dasdays
Mitglied zu übernehmen.quelle
(d2 - d1)
wird eintimedelta
Objekt sein.total_seconds
? Ich denke, es ist wichtig, da es das ist, was ich erwartet hatte, als ich es versuchte,seconds
ohne die Dokumente zu lesen.Eine weitere kurze Lösung:
quelle
if
in derdiff_dates
Funktion nicht völlig unnötig? Nach der Definition des Absolutwertesabs(date1-date2)
wird immer gleich seinabs(date2-date1)
.Ich habe den von Larsmans oben geposteten Code ausprobiert, aber es gibt ein paar Probleme:
1) Der Code wie er ist löst den von mauguerra erwähnten Fehler aus. 2) Wenn Sie den Code wie folgt ändern:
Dadurch werden Ihre datetime-Objekte in Zeichenfolgen konvertiert, jedoch zwei Dinge
1) Der Versuch, d2 - d1 auszuführen, schlägt fehl, da Sie den Minusoperator nicht für Zeichenfolgen verwenden können. 2) Wenn Sie die erste Zeile der oben angegebenen Antwort lesen, möchten Sie den Operator - für zwei Datums- / Uhrzeitobjekte verwenden, aber Sie nur konvertierte sie in Zeichenfolgen
Was ich gefunden habe ist, dass Sie buchstäblich nur Folgendes brauchen:
quelle
datetime.strptime
konvertiert Zeichenfolgen indatetime
Objekte. Da das OP feststellte, dass "das Format des Datums JJJJ-MM-TT ist", nahm ich an, dass die Daten als Zeichenfolgen dargestellt wurden. Wenn dies nicht der Fall ist, ist offensichtlich keine Konvertierung erforderlich.Versuche dies:
quelle
pd.date_range ('2019-01-01', '2019-02-01'). shape [0]
quelle