673 Stimmen

Hinzufügen von Tagen zu einem Datum in Python

Ich habe eine Verabredung "10/10/11(m-d-y)" und ich möchte mit einem Python-Skript 5 Tage dazuzählen. Bitte überlegen Sie sich eine allgemeine Lösung, die auch für die Monatsenden funktioniert.

Ich verwende folgenden Code:

import re
from datetime import datetime

StartDate = "10/10/11"

Date = datetime.strptime(StartDate, "%m/%d/%y")

print Date -> druckt '2011-10-10 00:00:00'

Jetzt möchte ich 5 Tage zu diesem Datum hinzufügen. Ich habe den folgenden Code verwendet:

EndDate = Date.today()+timedelta(days=10)

Dies führte zu diesem Fehler:

name 'timedelta' is not defined

1 Stimmen

Die Suche hat nicht funktioniert? Alle diese Code-Beispiele wären hilfreich gewesen: stackoverflow.com/search?q=python+timedelta . Es scheint über 200 Fragen wie diese zu geben.

1 Stimmen

14 Stimmen

Sie wollen fünf Tage hinzufügen, aber dann haben Sie timedelta(days=10) Ich bin verwirrt, woher die 10 kommt und warum es nicht 5 ist.

959voto

Botond Béres Punkte 14547

Die vorangegangenen Antworten sind richtig, aber es ist im Allgemeinen besser, so vorzugehen:

import datetime

Dann haben Sie mit datetime.timedelta :

date_1 = datetime.datetime.strptime(start_date, "%m/%d/%y")

end_date = date_1 + datetime.timedelta(days=10)

11 Stimmen

Datetime.datetime - warum zweimal?

121 Stimmen

Ein Import wie "from datetime import datetime, timedelta" würde die Lesbarkeit des Codes verbessern

13 Stimmen

@paulmorriss: Sie rufen den strptime Methode auf der datetime Klasse in der datetime Modul, daher müssen Sie angeben datetime.datetime .

239voto

DrTyrsa Punkte 29950

Importieren timedelta y date Erstens.

from datetime import timedelta, date

Und date.today() gibt das heutige Datum zurück, vielleicht wollen Sie aber auch

EndDate = date.today() + timedelta(days=10)

14 Stimmen

Datetime.date.today() anstelle von Date.today()

2 Stimmen

@dan-klasson Bei mir klappt es nicht, date Objekt nicht haben timedelta Methode. Welche Python-Version verwenden Sie?

0 Stimmen

@DrTyrsa Mein Fehler. Sollte sein: from datetime import timedelta, date; date.today() + timedelta(days=10)

45voto

fantabolous Punkte 18632

Wenn Sie bereits Folgendes verwenden Pandas können Sie ein wenig Platz sparen, indem Sie das Format nicht angeben:

import pandas as pd
startdate = "10/10/2011"
enddate = pd.to_datetime(startdate) + pd.DateOffset(days=5)

0 Stimmen

Hat bei mir gut funktioniert. Danke

9 Stimmen

Ich möchte nur anmerken, dass die Installation von Pandas nur für diesen Zweck wirklich übertrieben ist.

0 Stimmen

Dies war für mich die beste Lösung, da ich bereits Pandas verwendete und nicht noch eine weitere Bibliothek importieren wollte.

44voto

Pradeep Subash Punkte 321

Das könnte helfen:

from datetime import date, timedelta
date1 = date(2011, 10, 10)
date2 = date1 + timedelta(days=5)
print (date2)

0 Stimmen

Es gibt einen kleinen Tippfehler, in der dritten Zeile muss es heißen: date2 = date1 + timedelta(days=5)

2 Stimmen

Können Sie auch tun date1 += timedelta(days=5) .

19voto

Jorge Omar MH Punkte 471

Wenn Sie jetzt Tage zum Datum hinzufügen möchten, können Sie diesen Code verwenden

from datetime import datetime
from datetime import timedelta

date_now_more_5_days = (datetime.now() + timedelta(days=5) ).strftime('%Y-%m-%d')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X