python: 计算在 status 中花费的时间 written in a dict
python: calculate time spent in status written in a dict
我正在编写用于收集 JIRA 统计数据的脚本
现在我一直在计算 'Time in status'
使用 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)}
我需要一些帮助来计算工单在上述所有状态下花费了多少时间。
而且我不知道如何遍历它,同时发现然后票改变了它的状态,计算时间戳差异并将其写入结果字典。
使用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
我正在编写用于收集 JIRA 统计数据的脚本 现在我一直在计算 'Time in status'
使用 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)}
我需要一些帮助来计算工单在上述所有状态下花费了多少时间。 而且我不知道如何遍历它,同时发现然后票改变了它的状态,计算时间戳差异并将其写入结果字典。
使用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