我正在编写一个用于收集JIRA统计信息的脚本 现在,我只能计算“状态时间”
使用JIRA API进行一些魔术之后 我有一本字典:
{
'2014-12-25T16:47:08': 'In Progress',
'2015-05-25T19:47:54': 'INFO Request',
'2015-06-05T11:04:00': 'In Progress',
'2016-04-15T19:22:01': 'Postponed',
'2017-02-07T12:12:58': 'In Progress',
'2017-02-07T12:13:22': 'Postponed',
'2017-08-12T19:02:59': 'In Progress',
'2018-11-13T18:00:38': 'Resolved',
'2018-11-13T18:03:03': 'Closed'},
好吧,atm我已经写了这个东西:
def calc_in_status(dic):
formt="%Y-%m-%dT%H:%M:%S"
res_dic={}
for key,value in dic.items():
if value not in res_dic and value != 'Closed':
res_dic.update({value: datetime.strptime(key, formt)})
return res_dic
目前,它会产生一个初始命令,即
{ 'In Progress': datetime.datetime(2015, 6, 2, 16, 50, 37),
'PM Review': datetime.datetime(2015, 9, 16, 16, 21, 52),
'Postponed': datetime.datetime(2015, 12, 21, 13, 12, 46),
'Resolved': datetime.datetime(2015, 7, 7, 16, 52, 13)}
我需要一些帮助来计算票证在上述所有状态下花费了多少时间。 而且我不知道如何进行迭代,同时发现然后票证更改了它的状态,计算并写入时间戳差异到结果字典。
答案 0 :(得分:1)
使用datetime
模块:
from datetime import datetime
datetime_object1 = datetime.strptime('2014-12-05T16:47:08', '%Y-%m-%dT%X')
datetime_object2 = datetime.strptime('2014-12-25T16:47:08', '%Y-%m-%dT%X')
只需减去以下即可找到两个日期时间之间的时差:
datetime_object2 - datetime_object1
要遍历字典:
for key in my_dict.keys():
...
鉴于您的用例,您不应该使用字典,因为它不会维护所包含对象的任何顺序。考虑使用OrderedDict,它很像字典,除了它还记住其元素的顺序。 示例:
from collections import OrderedDict
my_data = OrderedDict([('In Progress', datetime_object1),
('PM Review', datetime_object2)])
time_diff = my_data.items()[1][1] - my_data.items()[0][1] # Subtract the date of the second item from the date of the first item