Ich habe ein Datum "10/10/11(m-d-y)"
und möchte es mit einem Python-Skript um 5 Tage verlängern. Bitte beachten Sie eine allgemeine Lösung, die auch am Monatsende 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 diesem Datum 5 Tage hinzufügen. Ich habe den folgenden Code verwendet:
EndDate = Date.today()+timedelta(days=10)
Was diesen Fehler zurückgegeben hat:
name 'timedelta' is not defined
name 'timedelta' is not defined
, bedeutet dies, dass Sietimedelta
nirgendwo definiert haben . Python ist normalerweise ziemlich informativ über seine Fehlermeldungen.Antworten:
Die vorherigen Antworten sind korrekt, aber es ist im Allgemeinen eine bessere Vorgehensweise:
Dann haben Sie mit
datetime.timedelta
:quelle
strptime
Methode für diedatetime
Klasse imdatetime
Modul auf, daher müssen Sie angebendatetime.datetime
.datetime
? Sie können sich nicht auf Konventionen verlassen, um dies zu wissen, sondern müssen sich immer die Importe ansehen.from datetime import DateTime
da Klassen CamelCased sind, aber datetime vor PEP8 steht.Importieren
timedelta
unddate
zuerst.Und
date.today()
wird die heutige Datumszeit zurückgeben, vielleicht möchten Siequelle
date
Objekt hat keinetimedelta
Methode. Welche Python-Version verwenden Sie?from datetime import timedelta, date; date.today() + timedelta(days=10)
Wenn Sie bereits Pandas verwenden , können Sie ein wenig Platz sparen, indem Sie das Format nicht angeben:
quelle
Ich denke, Ihnen fehlt so etwas:
quelle
Hier ist eine weitere Methode zum Hinzufügen von Tagen am Datum mithilfe des relativedelta von dateutil .
Ausgabe:
quelle
Wenn Sie jetzt Tage hinzufügen möchten, können Sie diesen Code verwenden
quelle
Hier ist eine Funktion zum Abrufen von + angegebenen Tagen
Verwendungszweck:
quelle
Um einen weniger ausführlichen Code zu haben und Namenskonflikte zwischen datetime und datetime.datetime zu vermeiden , sollten Sie die Klassen mit CamelCase- Namen umbenennen .
Sie können also Folgendes tun, was meiner Meinung nach klarer ist.
Außerdem würde es keinen Namenskonflikt geben, wenn Sie
import datetime
später möchten .quelle
Mit
timedelta
s können Sie Folgendes tun:quelle
Im Allgemeinen haben Sie jetzt keine Antwort erhalten, aber vielleicht ist meine von mir erstellte Klasse auch hilfreich. Für mich löst es alle meine Anforderungen, die ich jemals in meinen Pyhon-Projekten hatte.
Wie man es benutzt
self.tz = pytz.timezone("Europe/Warsaw")
- Hier definieren Sie die Zeitzone, die Sie im Projekt verwenden möchtenGetDate("2019-08-08").current()
- Dadurch wird Ihr Zeichenfolgendatum in ein zeitbewusstes Objekt mit der in Punkt 1 definierten Zeitzone konvertiert. Das Standardzeichenfolgenformat ist, Sie können esformat="%Y-%m-%d"
jedoch jederzeit ändern. (zBGetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current()
)GetDate("2019-08-08").get_month_first_day()
Gibt das angegebene Datum (Zeichenfolge oder Objekt) des ersten Monats des Monats zurückGetDate("2019-08-08").get_month_last_day()
Gibt das Datum des letzten Monats zurückGetDate("2019-08-08").minimum_time()
Gibt das angegebene Datum und den Start des Tages zurückGetDate("2019-08-08").maximum_time()
Gibt das angegebene Datum und das Ende des Tages zurückGetDate("2019-08-08").time_delta_days({number_of_days})
gibt das angegebene Datum zurück + add {Anzahl der Tage} (Sie können auch anrufen:GetDate(timezone.now()).time_delta_days(-1)
für gestern)GetDate("2019-08-08").time_delta_haours({number_of_hours})
ähnlich wie Punkt 7, aber stundenlang arbeitenGetDate("2019-08-08").time_delta_seconds({number_of_seconds})
ähnlich wie Punkt 7, arbeitet aber an Sekundenquelle
Einige Zeit müssen wir die Suche nach Datum und Datum verwenden. Wenn wir date__range verwenden, müssen wir 1 Tage mit to_date hinzufügen, da sonst das Abfrageset leer wird.
Beispiel:
von datetime import timedelta
from_date = parse_date (request.POST ['from_date'])
to_date = parse_date (request.POST ['to_date']) + timedelta (Tage = 1)
Anwesenheitsliste = models.DailyAttendance.objects.filter (attdate__range = [from_date, to_date])
quelle