35 votes

Python générer des séries de dates

Comment puis-je générer un tableau avec des dates comme ceci :

Horodatage en javascript au format milisecondes du 2010.12.01 00:00:00 au 2010.12.12.30 23.59.59 avec un pas de 5 minutes.

['2010.12.01 00:00:00', '2010.12.01 00:05:00','2010.12.01 00:10:00','2010.12.01 00:15:00', ...]

70voto

cantdutchthis Points 1153

J'ai juste pensé qu'il serait utile de noter que pandas dispose également de cette fonctionnalité. En fonction du cas que vous traitez exactement, pandas peut être un outil dans lequel il vaut la peine d'investir du temps.

import pandas as pd 
times = pd.date_range('2012-10-01', periods=289, freq='5min')

Ceci renvoie un timeseries-index pandas. Qui peuvent être convertis en tableaux numpy.

np.array(times)

65voto

Lennart Regebro Points 52510

Bien évidemment, vous commencez à l'heure de début, vous bouclez jusqu'à l'heure de fin et vous incrémentez entre les deux.

import datetime

dt = datetime.datetime(2010, 12, 1)
end = datetime.datetime(2010, 12, 30, 23, 59, 59)
step = datetime.timedelta(seconds=5)

result = []

while dt < end:
    result.append(dt.strftime('%Y-%m-%d %H:%M:%S'))
    dt += step

Assez trivial.

1voto

cgi Points 84

Il s'agit de ma variante pour python3, mais elle pourrait facilement être convertie en code python2.6 :

import datetime as dt

dt1 = dt.datetime(2010, 12, 1)
dt2 = dt.datetime(2010, 12, 12, 23, 59, 59)

time_step = 5 # secoonds
delta = dt2 - dt1

delta_sec = delta.days * 24 * 60 * 60 + delta.seconds

res = [dt1 + dt.timedelta(0, t) for t in range(0, delta_sec, time_step)]

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