222 votes

Différence entre deux dates en Python

J'ai deux dates différentes et je veux connaître la différence en 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 la différence de date en jours.

0 votes

Notez que votre fonction addonDays échouera les jours de l'heure d'été.

0 votes

Vous avez raison. J'ai déjà modifié la fonction. Si vous ajoutez 3600 (une heure), cela fonctionnera.

-2voto

J'ai essayé plusieurs codes, mais j'ai fini par utiliser quelque chose d'aussi simple que (en Python 3) :

from datetime import datetime
df['difference_in_datetime'] = abs(df['end_datetime'] - df['start_datetime'])

Si votre date de début y date de fin Les colonnes sont en datetime64[ns] format, datetime le comprend et renvoie la différence en jours + timestamp, qui est en timedelta64[ns] format.

Si vous voulez voir seulement la différence dans jours vous ne pouvez séparer que les date partie de la date de début y date de fin en utilisant (fonctionne également pour le temps portion) :

df['start_date'] = df['start_datetime'].dt.date
df['end_date'] = df['end_datetime'].dt.date

Et ensuite courir :

df['difference_in_days'] = abs(df['end_date'] - df['start_date'])

-5voto

ar91 Points 9

Pd.date_range('2019-01-01', '2019-02-01').shape[0]

0 votes

S'il vous plaît, corrigez la réponse d'une manière ou d'une autre pour récupérer la réputation de downvote.

0 votes

Proposez quelque chose sans "pandas".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X