Python генерирует ряд дат

Как я могу создать массив с такими датами:

Временные метки в формате javascript miliseconds с 2010.12.01 00:00:00 по 2010.12.12.30 23.59.59 с шагом 5 минут.

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

Ответ 1

Ну, очевидно, вы начинаете в начале, цикл, пока не достигнете конечного времени и не увеличите между ними.

import datetime

dt = datetime.datetime(2010, 12, 01)
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

Довольно тривиально.

Ответ 2

Я просто почувствовал, что, возможно, стоит отметить, что pandas также имеет эту функциональность. В зависимости от того, в каком случае вы имеете дело точно, pandas может быть достойным инструментом для инвестирования времени.

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

Возвращает индекс времени pandas. Который может быть преобразован в массивы numpy.

np.array(times)

Ответ 3

это мой вариант для python3, но он легко может быть преобразован в код 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)]