Geralmente você já teve uma resposta agora, mas talvez minha turma que criei também seja útil. Para mim, resolve todos os meus requisitos que já tive em meus projetos 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)
Como usá-lo
self.tz = pytz.timezone("Europe/Warsaw")
- aqui você define o fuso horário que deseja usar no projeto
GetDate("2019-08-08").current()
- isso converterá a data da seqüência de caracteres em objeto que reconhece o horário com o fuso horário definido na pt 1. O formato padrão da sequência é, format="%Y-%m-%d"
mas fique à vontade para alterá-lo. (por exemplo GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current()
)
GetDate("2019-08-08").get_month_first_day()
retorna data (string ou objeto) mês primeiro dia
GetDate("2019-08-08").get_month_last_day()
retorna data mês mês último dia
GetDate("2019-08-08").minimum_time()
retorna data e dia início
GetDate("2019-08-08").maximum_time()
retorna a data final do dia
GetDate("2019-08-08").time_delta_days({number_of_days})
retorna a data especificada + adiciona {número de dias} (você também pode ligar: GetDate(timezone.now()).time_delta_days(-1)
ontem)
GetDate("2019-08-08").time_delta_haours({number_of_hours})
semelhante ao pt 7, mas trabalhando horas
GetDate("2019-08-08").time_delta_seconds({number_of_seconds})
semelhante ao pt 7, mas trabalhando em segundos
name 'timedelta' is not defined
, isso significa que você não definiu emtimedelta
nenhum lugar. O Python geralmente é bastante informativo sobre suas mensagens de erro.