Im Allgemeinen haben Sie jetzt eine Antwort bekommen, aber vielleicht ist meine Klasse, die ich erstellt habe, auch hilfreich. Für mich löst sie alle meine Anforderungen, die ich jemals in meinen Pyhon-Projekten hatte.
class GetDate:
def __init__(self, date, format="%Y-%m-%d"):
self.tz = pytz.timezone("Europe/Warsaw")
if isinstance(date, str):
date = datetime.strptime(date, format)
self.date = date.astimezone(self.tz)
def time_delta_days(self, days):
return self.date + timedelta(days=days)
def time_delta_hours(self, hours):
return self.date + timedelta(hours=hours)
def time_delta_seconds(self, seconds):
return self.date + timedelta(seconds=seconds)
def get_minimum_time(self):
return datetime.combine(self.date, time.min).astimezone(self.tz)
def get_maximum_time(self):
return datetime.combine(self.date, time.max).astimezone(self.tz)
def get_month_first_day(self):
return datetime(self.date.year, self.date.month, 1).astimezone(self.tz)
def current(self):
return self.date
def get_month_last_day(self):
lastDay = calendar.monthrange(self.date.year, self.date.month)[1]
date = datetime(self.date.year, self.date.month, lastDay)
return datetime.combine(date, time.max).astimezone(self.tz)
Wie man es benutzt
self.tz = pytz.timezone("Europe/Warsaw")
- Hier legen Sie die Zeitzone fest, die Sie im Projekt verwenden möchten
GetDate("2019-08-08").current()
- konvertiert die Zeichenkette date in time aware object mit der in Punkt 1 definierten Zeitzone. Das Standard-Stringformat ist format="%Y-%m-%d"
aber Sie können ihn gerne ändern. (z.B.. GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current()
)
GetDate("2019-08-08").get_month_first_day()
liefert das angegebene Datum (String oder Objekt) Monat erster Tag
GetDate("2019-08-08").get_month_last_day()
Rückgabe des angegebenen Datums Monat letzter Tag
GetDate("2019-08-08").minimum_time()
gibt gegebenes Datum zurück Tag Beginn
GetDate("2019-08-08").maximum_time()
Rückgabe des angegebenen Datums Tag Ende
GetDate("2019-08-08").time_delta_days({number_of_days})
gibt das angegebene Datum zurück + addiert {Anzahl der Tage} (Sie können auch aufrufen: 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 mit mehr Arbeitsstunden
GetDate("2019-08-08").time_delta_seconds({number_of_seconds})
ähnlich wie Punkt 7, aber in Sekundenschnelle
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
Mögliche Duplikate von Hinzufügen von Tagen zu einem Datum in Python mithilfe von Schleifen, Bereichen und Slicing
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.
25 Stimmen
Allgemeiner Hinweis: Wenn Sie die Fehlermeldung
name 'timedelta' is not defined
bedeutet dies, dass Sie nicht definiert habentimedelta
überall. Python ist in der Regel recht informativ, was seine Fehlermeldungen angeht.