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.

15voto

Atul Arvind Punkte 14857

Hier ist eine weitere Methode zum Hinzufügen von Tagen an einem Datum mit Relativdelta von dateutil .

from datetime import datetime
from dateutil.relativedelta import relativedelta

print 'Today: ',datetime.now().strftime('%d/%m/%Y %H:%M:%S') 
date_after_month = datetime.now()+ relativedelta(days=5)
print 'After 5 Days:', date_after_month.strftime('%d/%m/%Y %H:%M:%S')

Ausgabe:

Heute: 25/06/2015 15:56:09

Nach 5 Tagen: 30/06/2015 15:56:09

1 Stimmen

Relativedelta ist besonders nützlich bei Operationen mit Monat, Jahr usw.

14voto

vstm Punkte 12239

Ich vermute, Sie vermissen so etwas:

from datetime import timedelta

9voto

Guray Celik Punkte 1275

Hier ist eine Funktion, die von jetzt + angegebenen Tagen ausgeht

import datetime

def get_date(dateFormat="%d-%m-%Y", addDays=0):

    timeNow = datetime.datetime.now()
    if (addDays!=0):
        anotherTime = timeNow + datetime.timedelta(days=addDays)
    else:
        anotherTime = timeNow

    return anotherTime.strftime(dateFormat)

Uso:

addDays = 3 #days
output_format = '%d-%m-%Y'
output = get_date(output_format, addDays)
print output

1 Stimmen

Guter Code. Aber Ihr IF zum Testen der addDays in get_date ist nicht notwendig

8voto

toto_tico Punkte 15863

Um eine weniger ausführlicher Code und vermeiden Namenskonflikte zwischen datetime und datetime.datetime sollten Sie die Klassen umbenennen mit CamelCase Namen.

from datetime import datetime as DateTime, timedelta as TimeDelta

Sie können also wie folgt vorgehen, was meiner Meinung nach klarer ist.

date_1 = DateTime.today() 
end_date = date_1 + TimeDelta(days=10)

Außerdem gäbe es kein Namenskonflikt wenn Sie import datetime später.

4voto

Amar Kumar Punkte 2352

Versuchen Sie dies:

Hinzufügen von 5 Tagen zum aktuellen Datum.

from datetime import datetime, timedelta

current_date = datetime.now()
end_date = current_date + timedelta(days=5) # Adding 5 days.
end_date_formatted = end_date.strftime('%Y-%m-%d')
print(end_date_formatted)

Subtraktion von 5 Tagen vom aktuellen Datum.

from datetime import datetime, timedelta

current_date = datetime.now()
end_date = current_date + timedelta(days=-5) # Subtracting 5 days.
end_date_formatted = end_date.strftime('%Y-%m-%d')
print(end_date_formatted)

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