Eu tenho uma data "10/10/11(m-d-y)"
e quero adicionar 5 dias a ela usando um script Python. Considere uma solução geral que funcione também no final do mês.
Estou usando o seguinte código:
import re
from datetime import datetime
StartDate = "10/10/11"
Date = datetime.strptime(StartDate, "%m/%d/%y")
print Date
-> está imprimindo '2011-10-10 00:00:00'
Agora eu quero adicionar 5 dias a esta data. Eu usei o seguinte código:
EndDate = Date.today()+timedelta(days=10)
O que retornou este erro:
name 'timedelta' is not defined
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.Respostas:
As respostas anteriores estão corretas, mas geralmente é uma prática melhor:
Então você terá, usando
datetime.timedelta
:fonte
strptime
método nadatetime
classe nodatetime
módulo, então você precisa especificardatetime.datetime
.datetime
? Você não pode confiar na convenção para saber, mas sempre precisa observar as importações.from datetime import DateTime
porque as classes são CamelCased, mas a data e hora precede o PEP8.Importe
timedelta
edate
primeiro.E
date.today()
retornará a data e hora de hoje, pode ser que você queirafonte
date
objeto não temtimedelta
método. Qual versão do Python você está usando?from datetime import timedelta, date; date.today() + timedelta(days=10)
Se você já estiver usando pandas , poderá economizar um pouco de espaço não especificando o formato:
fonte
Eu acho que você está perdendo algo assim:
fonte
Aqui está outro método para adicionar dias na data usando o relativedelta do dateutil .
Resultado:
fonte
Se você deseja adicionar dias até agora, pode usar este código
fonte
Aqui está uma função de obter a partir de agora + dias especificados
Uso:
fonte
Para ter um código menos detalhado e evitar conflitos de nome entre datetime e datetime.datetime , você deve renomear as classes com nomes do CamelCase .
Então você pode fazer o seguinte, o que eu acho mais claro.
Além disso, não haveria conflito de nomes se você quiser
import datetime
mais tarde.fonte
usando
timedelta
s você pode fazer:fonte
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.
Como usá-lo
self.tz = pytz.timezone("Europe/Warsaw")
- aqui você define o fuso horário que deseja usar no projetoGetDate("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 exemploGetDate("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 diaGetDate("2019-08-08").get_month_last_day()
retorna data mês mês último diaGetDate("2019-08-08").minimum_time()
retorna data e dia inícioGetDate("2019-08-08").maximum_time()
retorna a data final do diaGetDate("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 horasGetDate("2019-08-08").time_delta_seconds({number_of_seconds})
semelhante ao pt 7, mas trabalhando em segundosfonte
Algum tempo, precisamos usar a pesquisa de data para data. Se usarmos date_range, precisamos adicionar 1 dia com to_date, caso contrário, o queryyset ficará vazio.
Exemplo:
da data e hora da importação timedelta
from_date = parse_date (request.POST ['from_date'])
to_date = parse_date (request.POST ['to_date']) + timedelta (dias = 1)
lista de presença = models.DailyAttendance.objects.filter (attdate__range = [from_date, to_date])
fonte