En general, ahora tiene una respuesta, pero tal vez mi clase que creé también sea útil. Para mí, resuelve todos mis requisitos que he tenido en mis proyectos de Pyhon.
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)
Cómo usarlo
self.tz = pytz.timezone("Europe/Warsaw")
- aquí define la zona horaria que desea usar en el proyecto
GetDate("2019-08-08").current()
- esto convertirá la fecha de su cadena en un objeto con reconocimiento de tiempo con la zona horaria que definió en el punto 1. El formato de cadena predeterminado es format="%Y-%m-%d"
pero no dude en cambiarlo. (ej. GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current()
)
GetDate("2019-08-08").get_month_first_day()
devuelve fecha dada (cadena u objeto) mes primer día
GetDate("2019-08-08").get_month_last_day()
devuelve fecha dada mes último día
GetDate("2019-08-08").minimum_time()
devuelve fecha dada inicio del día
GetDate("2019-08-08").maximum_time()
devuelve fecha dada fin de día
GetDate("2019-08-08").time_delta_days({number_of_days})
devuelve la fecha dada + agregar {número de días} (también puede llamar: GetDate(timezone.now()).time_delta_days(-1)
para ayer)
GetDate("2019-08-08").time_delta_haours({number_of_hours})
similar al pt 7 pero trabajando en horas
GetDate("2019-08-08").time_delta_seconds({number_of_seconds})
similar al pt 7 pero trabajando en segundos
name 'timedelta' is not defined
, eso significa que no has definido nadatimedelta
. Python suele ser bastante informativo sobre sus mensajes de error.