尝试生成时间戳记

时间:2018-11-07 09:13:45

标签: python

我正在尝试生成一个从8月21日到10月23日的时间戳记。每个时间戳记都有15分钟的时间增量。

当前代码的问题是缺少了几天。在这里找不到逻辑问题。数据太多,无法调试。

hours_counter = 0
minutes_counter = 0
days_counter = 0

for j in range(30):
    days_counter = days_counter + 1
    if days_counter > 30:
        days_counter = 0

    for i in range(360):
        minutes_counter = minutes_counter + 15
        if minutes_counter == 45:
            minutes_counter = 0
            hours_counter = hours_counter + 1

        s = datetime.strptime('2018-08-21', '%Y-%m-%d') + timedelta(hours=hours_counter, 
                                                                    minutes=minutes_counter,
                                                                    days=days_counter)
        timeStamps.append(s)
        path = os.path.join(
            r'C:\\ahmed\\SpeedFT-meter12\\peakdata\\' + s.strftime("%Y-%m-%d") + r'\\peakdata_' + s.strftime(
                "%Y%m%d_%H%M") + r'.bz2')
        directoary_names.append(path)

2 个答案:

答案 0 :(得分:2)

一个问题是,移至第二天时,您不会将小时计数器重置为零(可能还有其他时间)。

我个人会简化逻辑并编写:

import datetime

ts = datetime.datetime.strptime('2018-08-21', '%Y-%m-%d')
end_ts = datetime.datetime.strptime('2018-10-24', '%Y-%m-%d')
while ts < end_ts:
  print(ts)
  ts += datetime.timedelta(minutes=15)

答案 1 :(得分:0)

作为在这里看书的人的替代选择。您可以仅使用pandas data_range函数来生成start_dateend_date之间的列表。

import pandas as pd
start_date = '2018-08-21'
end_date =  '2018-10-24'
alltimes=pd.date_range(start_date, end_date, freq='15min')
for times in alltimes:
    print times