Wenn ich zwei Daten habe (z. B. '8/18/2008'
und '9/26/2008'
), wie kann ich die Anzahl der Tage zwischen diesen beiden Daten am besten ermitteln?
506
Wenn Sie zwei Datumsobjekte haben, können Sie diese einfach subtrahieren, wodurch ein timedelta
Objekt berechnet wird.
from datetime import date
d0 = date(2008, 8, 18)
d1 = date(2008, 9, 26)
delta = d1 - d0
print(delta.days)
Der relevante Abschnitt der Dokumente: https://docs.python.org/library/datetime.html .
In dieser Antwort finden Sie ein weiteres Beispiel.
np.datetime64
zupython datetime
stackoverflow.com/questions/52982056/…Mit der Kraft von datetime:
quelle
date
fehlt auch acht Jahre später noch ein eigenes Äquivalent zustrptime()
.strptime
dasformat
Argument? Sollte mit dem ersten Arg-Datum klar sein, das ein Format hat.Tage bis Weihnachten:
Mehr Arithmetik hier .
quelle
Sie möchten das Datum / Uhrzeit-Modul.
Ein anderes Beispiel:
Wie hier ausgeführt
quelle
delta = today - last_year
print(delta.days)
quelle
abs()
, was nützlich ist, wenn die verglichenen Daten vorher unbekannt sind und es sich um den Unterschied handelt, an dem Sie interessiert sind. Wenn Ihr zweites Datumdatetime.strptime(date, date)
später als das erste Datum ist, ist das Ergebnis negativ.abs()
macht alle Eingaben absolut (dh positiv).Es kann auch leicht gemacht werden mit
arrow
:Als Referenz: http://arrow.readthedocs.io/en/latest/
quelle
ohne Lib nur reinen Code:
quelle
Jeder hat hervorragend mit dem Datum geantwortet. Lassen Sie mich versuchen, es mit Pandas zu beantworten
Dies wird die Antwort geben. Falls eine der Eingaben eine Datenrahmenspalte ist. Verwenden Sie einfach dt.days anstelle von Tagen
quelle
Es gibt auch eine
datetime.toordinal()
Methode, die noch nicht erwähnt wurde:https://docs.python.org/3/library/datetime.html#datetime.date.toordinal
Scheint gut geeignet für die Berechnung der Tagesdifferenz, wenn auch nicht so lesbar wie
timedelta.days
.quelle
(d1 - d0).days
kehrt zurück0
,d1.toordinal() - d0.toordinal()
kehrt zurück1
. Hängt davon ab, was Sie in Ihrem tatsächlichen Anwendungsfall benötigen.Für die Berechnung von Datum und Uhrzeit gibt es mehrere Möglichkeiten, aber ich werde auf einfache Weise schreiben:
Ich hoffe es hilft
quelle
Dies setzt natürlich voraus, dass Sie bereits überprüft haben, ob Ihre Daten im Format vorliegen
r'\d+/\d+/\d+'
.quelle
map(int, s.split('/'))
. Nicht gerade bahnbrechend, aber andererseits ist diese Frage ziemlich dumm grundlegend. Meine Antwort zeigt nur einen anderen Weg, um die Katze zu häuten.Hier sind drei Möglichkeiten, um dieses Problem zu lösen:
quelle