Tenho duas datas diferentes e quero saber a diferença de dias entre elas. O formato da data é AAAA-MM-DD.
Eu tenho uma função que pode adicionar ou subtrair um determinado número a uma data:
def addonDays(a, x):
ret = time.strftime("%Y-%m-%d",time.localtime(time.mktime(time.strptime(a,"%Y-%m-%d"))+x*3600*24+3600))
return ret
onde A é a data e x o número de dias que eu quero adicionar. E o resultado é outra data.
Eu preciso de uma função na qual eu possa dar duas datas e o resultado seria um int com diferença de data em dias.
Respostas:
Use
-
para obter a diferença entre doisdatetime
objetos e levar odays
membro.fonte
(d2 - d1)
será umtimedelta
objeto.total_seconds
também? Eu acho que é importante, pois é o que eu esperava obter quando tenteiseconds
sem ler os documentos.Outra solução curta:
fonte
if
in não édiff_dates
completamente desnecessária? Pela definição do valor absoluto,abs(date1-date2)
sempre será igual aabs(date2-date1)
.Eu tentei o código postado por larsmans acima, mas existem alguns problemas:
1) O código como está lançará o erro conforme mencionado por mauguerra 2) Se você alterar o código para o seguinte:
Isso converterá seus objetos de data e hora em seqüências de caracteres, mas duas coisas
1) A tentativa de executar o d2 - d1 falhará, pois você não pode usar o operador menos nas seqüências de caracteres e 2) Se você ler a primeira linha da resposta acima indicada, deseja usar o operador - em dois objetos de data e hora, mas apenas converteu-os em strings
O que descobri é que você literalmente precisa apenas do seguinte:
fonte
datetime.strptime
para converter seqüências de caracteres emdatetime
objetos. Como o OP declarou que "O formato da data é AAAA-MM-DD", presumi que as datas fossem representadas como seqüências de caracteres. Caso contrário, obviamente não há necessidade de conversão.Tente o seguinte:
fonte
pd.date_range ('2019-01-01', '2019-02-01'). shape [0]
fonte