J'ai deux dates différentes et je veux connaître la différence de jours entre elles. Le format de la date est AAAA-MM-JJ.
J'ai une fonction qui peut ajouter ou soustraire un nombre donné à une date:
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
où A est la date et x le nombre de jours que je veux ajouter. Et le résultat est une autre date.
J'ai besoin d'une fonction où je peux donner deux dates et le résultat serait un int avec une différence de date en jours.
Réponses:
Utilisez
-
pour obtenir la différence entre deuxdatetime
objets et prendre ledays
membre.la source
(d2 - d1)
sera untimedelta
objet.total_seconds
? Je pense que c'est important car c'est ce que je m'attendais à obtenir lorsque j'ai essayéseconds
sans lire la documentation.Une autre solution courte:
la source
if
dans ladiff_dates
fonction n'est-elle pas complètement inutile? Par la définition de la valeur absolue,abs(date1-date2)
sera toujours égal àabs(date2-date1)
.J'ai essayé le code posté par larsmans ci-dessus mais, il y a quelques problèmes:
1) Le code tel quel lèvera l'erreur comme mentionné par mauguerra 2) Si vous changez le code comme suit:
Cela convertira vos objets datetime en chaînes, mais deux choses
1) Essayer de faire d2 - d1 échouera car vous ne pouvez pas utiliser l'opérateur moins sur les chaînes et 2) Si vous lisez la première ligne de la réponse ci-dessus indiquée, vous voulez utiliser l'opérateur - sur deux objets datetime mais, vous les a convertis en chaînes
Ce que j'ai trouvé, c'est que vous n'avez besoin que de ce qui suit:
la source
datetime.strptime
pour convertir des chaînes endatetime
objets. Puisque l'OP a déclaré que «le format de la date est AAAA-MM-JJ», j'ai supposé que les dates étaient représentées sous forme de chaînes. Si ce n'est pas le cas, une conversion n'est évidemment pas nécessaire.Essaye ça:
la source
pd.date_range ('2019-01-01', '2019-02-01'). shape [0]
la source