Q:

Как сгенерировать список дата+время в каком-либо диапазоне с заданным шагом?

Как сгенерировать список дата+время в каком-либо диапазоне с заданным шагом?
Например, мне нужно, чтобы скрипт автоматически вывел куда-нибудь (да хоть в текстовый файл) все возможные варианты дата:время (например MM/DD/YYYY:hh:mm:ss), которые присутствуют в интервале 10/25/2015:00:00:05 - 10/25/2015:23:59:58 с шагом, например 33 секунды.
В моем видении, вывод должен быть таким:
10/25/2015:00:00:05
10/25/2015:00:00:39
...
10/25/2015:14:27:28
...
10/25/2015:21:49:18

A:

Используйте модуль datetime:

datetime.datetime -- для хранение времени
datetime.timedelta -- для увеличения времени на указанное значение времени
strptime -- для разбора объекта datetime.datetime по шаблону
strftime -- для получения строки с датой из объекта datetime.datetime по шаблону

Пример:
import datetime as DT

date_fmt = '%m/%d/%Y:%H:%M:%S'
step = DT.timedelta(seconds=33)
start_date = DT.datetime.strptime('10/25/2015:00:00:05', date_fmt)
last_date = DT.datetime.strptime('10/25/2015:23:59:58', date_fmt)

while start_date <= last_date:
    print(start_date, '|', start_date.strftime(date_fmt))
    start_date += step

# 2015-10-25 00:00:05 | 10/25/2015:00:00:05
# 2015-10-25 00:00:38 | 10/25/2015:00:00:38
# 2015-10-25 00:01:11 | 10/25/2015:00:01:11
# 2015-10-25 00:01:44 | 10/25/2015:00:01:44
# 2015-10-25 00:02:17 | 10/25/2015:00:02:17
# ...

A:

Ленивый вариант с использованием модуля Pandas:
import pandas as pd   # pip install pandas / conda install pandas

DT_FMT = "%m/%d/%Y:%H:%M:%S"

def get_date_range(dt_from, dt_to, freq="1D", dt_fmt=DT_FMT, **kwargs):
    dt_from = pd.to_datetime(dt_from, format=dt_fmt)
    dt_to = pd.to_datetime(dt_to, format=dt_fmt)
    return pd.date_range(dt_from, dt_to, freq=freq, **kwargs)

(get_date_range("10/25/2015:00:00:05", "10/25/2015:23:59:58", freq="33S")
 .to_frame(name="TimeStamp")
 .to_csv("c:/temp/result.csv", date_format=DT_FMT, index=False))

Результат (C:\temp\result.csv):
TimeStamp
10/25/2015:00:00:05
10/25/2015:00:00:38
10/25/2015:00:01:11
...
10/25/2015:23:58:20
10/25/2015:23:58:53
10/25/2015:23:59:26

A:

Можно с помощью встроенной функции range:
from datetime import datetime, timedelta
f = '%m/%d/%Y:%H:%M:%S'
beg, fin = [datetime.strptime(d, f) for d in ['10/25/2015:00:00:05', '10/25/2015:23:59:58']]
step = 33
ts = [beg + timedelta(seconds=s) for s in range(0, int((fin - beg).total_seconds() + 1), step)]

В ts будет:
['10/25/2015:00:00:05',
 '10/25/2015:00:00:38',
 '10/25/2015:00:01:11',
...
 '10/25/2015:23:58:20',
 '10/25/2015:23:58:53',
 '10/25/2015:23:59:26']

Демо.

