我正在尝试生成一个从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)
答案 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_date
和end_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