按任意deltatime递增时间戳并与数据列表耦合

时间:2016-12-29 14:43:45

标签: python datetime for-loop while-loop increment

我认为这有一个简单的答案,但我无法理解它。 基本上我有一个数据列表是

的结果
MySqlCommand.LastInsertedId

我试图创建一个新列表,将Data_list的第一个结果与时间戳联系起来。然后是第二个span = 2 datas = a['value'].split(",") Data_list = [".".join(datas[i:i+span]) for i in range(0, len(datas), span)] #Where a['value'] is a list ,第三个Date_time + deltatime

Date_time + 2* deltatime

目前我正在使用此代码

#Where T['value'] is a list
Date_time = datetime.strptime(T['value'], '%d-%m-%Y %H:%M:%S').time()
deltatime = 9e-5

打印

#################
DeltaTimeS = 9e-5
#################

Date_time = datetime.strptime(T['value'], '%d-%m-%Y %H:%M:%S').time()
print 'Date_time =',Date_time 

def addSecs(tm, secs):
    fulldate = datetime(100, 1, 1, tm.hour, tm.minute, tm.second)
    fulldate = fulldate + timedelta(seconds=secs)
    return fulldate.time()

#a = datetime.now().time()
a = Date_time
b = addSecs(a, DeltaTimeS)

#for a in Data['result'][:1]:      #only print the first result in the list

span = 2
datas = a['value'].split(",")
Data_list = [".".join(datas[i:i+span]) for i in range(0, len(datas), span)]

for a in Data_list:
    print a,b 

包含所有数据和时间戳(仅更改一次)的列表,而不是每次都增加。任何帮助都会很棒 也许用" len"来计算第一个列表的大小。然后将其作为" b"的范围。但我如何让每次增加b?

2 个答案:

答案 0 :(得分:1)

注意:您提供的代码不能用于重现您收到的输出。因此,我的回答是基于我从你的问题和很多即兴创作中所理解的。

每次打印的时间戳为b,通过调用addSecs进行一次评估。为什么期望它在上一个for循环的每次迭代中都有不同的值?

如果要提前时间戳,则需要为每次循环迭代调用addSecs并相应地调整第二个参数。实现此目的的一种简单方法是使用enumerate获取循环迭代的计数器,并将DeltaTimeS乘以此计数器:

from datetime import datetime, timedelta

T = {}
T['value'] = "29-12-2016 14:59:08"
a = {}
a['value'] = "1,2,3,4,5,6,7,8"

DeltaTimeS = 9e-5
Date_time = datetime.strptime(T['value'], '%d-%m-%Y %H:%M:%S').time()

def addSecs(tm, secs):
    fulldate = datetime(100, 1, 1, tm.hour, tm.minute, tm.second)
    fulldate = fulldate + timedelta(seconds=secs)
    return fulldate.time()

span = 2
datas = a['value'].split(",")
Data_list = [".".join(datas[i:i+span]) for i in range(0, len(datas), span)]

for i, x in enumerate(Data_list):
    print x, addSecs(Date_time, i * DeltaTimeS)

结果是:

1.2 14:59:08
3.4 14:59:08.000090
5.6 14:59:08.000180
7.8 14:59:08.000270

答案 1 :(得分:0)

建议您使用enumerate(),例如:

import datetime as dt

# inputs
values = [
    0.02027,
    0.01549,
    0.00559,
    -0.00760,
    -0.02439,
]    
start_time = dt.datetime.now()

delta_time_seconds = 9e-5
format = '%d-%m-%Y %H:%M:%S'

# build a list of data, timestamp tuples    
list_of_tuples = [(value, (start_time +
                           dt.timedelta(seconds=i*delta_time_seconds)
                           ).strftime(format))
                  for i, value in enumerate(values)]

# show what we got
for data_point in list_of_tuples:
    print(data_point[0], data_point[1])