5

我正在尝试计算从创建问题到解决问题的时间。使用这些字段:

creation_time = issue.fields.created
resolved_time = issue.fields.resolutiondate

打印时输出:

Creation: 2016-06-09T14:37:05.000+0200 Resolved: 2016-06-10T10:53:12.000+0200

无论如何我可以用创建日期和时间减去解决日期和时间来找出在一个问题上花费了多少时间?

4

3 回答 3

3

将日期/时间字符串解析为合适的日期时间对象,然后您可以使用它们进行计算。

这篇文章解释了如何解析日期/时间字符串,或者您可以查看strptime() 方法的文档

对于计算,这篇文章中有示例,这里有详细的文档。

例如,这样的事情应该接近解决方案:

from datetime import datetime
from datetime import timedelta

createdTime = datetime.strptime('2016-06-09T14:37:05.000+0200', '%Y-%m-%dT%H:%M:%S.%f')
resolvedTime = datetime.strptime('2016-06-10T10:53:12.000+0200', '%Y-%m-%dT%H:%M:%S.%f')

duration = resolvedTime - createdTime

duration将是一个timedelta对象,您可以访问duration.daysduration.secondsduration.microseconds以获取其信息。

strptime确实有一个缺点,它不支持解析时区,因此您必须先剪切输入的那部分。或者,请参阅这篇文章

于 2016-06-10T11:21:14.513 回答
0

我编写了一个函数,以天为单位计算响应时间的平均值、中位数和方差。希望有帮助;

import datetime as d
import numpy as np

ymd_create = []
ymd_resdate = []
delta_t = []

class calculate:
    def __init__(self):
        self.result = 0

    def meantime(self, issueobject):
        for i in range(0, len(issueobject)):
            ymd_create.append(d.datetime(int(issueobject[i].raw[u'fields'][u'created'].split('T')[0].split('-')[0]), int(issueobject[i].raw[u'fields'][u'created'].split('T')[0].split('-')[1]), int(issueobject[i].raw[u'fields']
                                                                                                                                                                                                     [u'created'].split('T')[0].split('-')[2]), int(issueobject[i].raw[u'fields'][u'created'].split('T')[1].split(':')[0]), int(issueobject[i].raw[u'fields'][u'created'].split('T')[1].split(':')[1])))
            ymd_resdate.append(d.datetime(int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[0].split('-')[0]), int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[0].split('-')[1]), int(issueobject[i].raw[u'fields']
                                                                                                                                                                                                                    [u'resolutiondate'].split('T')[0].split('-')[2]), int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[1].split(':')[0]), int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[1].split(':')[1])))
            delta_t.append((ymd_resdate[i] - ymd_create[i]).days)

        self.result = np.mean(np.array(delta_t))
        return self.result

    def mediantime(self, issueobject):
        for i in range(0, len(issueobject)):
            ymd_create.append(d.datetime(int(issueobject[i].raw[u'fields'][u'created'].split('T')[0].split('-')[0]), int(issueobject[i].raw[u'fields'][u'created'].split('T')[0].split('-')[1]), int(issueobject[i].raw[u'fields']
                                                                                                                                                                                                     [u'created'].split('T')[0].split('-')[2]), int(issueobject[i].raw[u'fields'][u'created'].split('T')[1].split(':')[0]), int(issueobject[i].raw[u'fields'][u'created'].split('T')[1].split(':')[1])))
            ymd_resdate.append(d.datetime(int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[0].split('-')[0]), int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[0].split('-')[1]), int(issueobject[i].raw[u'fields']
                                                                                                                                                                                                                    [u'resolutiondate'].split('T')[0].split('-')[2]), int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[1].split(':')[0]), int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[1].split(':')[1])))
            delta_t.append((ymd_resdate[i] - ymd_create[i]).days)

        self.result = np.median(np.array(delta_t))
        return self.result

    def variancetime(self, issueobject):
        for i in range(0, len(issueobject)):
            ymd_create.append(d.datetime(int(issueobject[i].raw[u'fields'][u'created'].split('T')[0].split('-')[0]), int(issueobject[i].raw[u'fields'][u'created'].split('T')[0].split('-')[1]), int(issueobject[i].raw[u'fields']
                                                                                                                                                                                                     [u'created'].split('T')[0].split('-')[2]), int(issueobject[i].raw[u'fields'][u'created'].split('T')[1].split(':')[0]), int(issueobject[i].raw[u'fields'][u'created'].split('T')[1].split(':')[1])))
            ymd_resdate.append(d.datetime(int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[0].split('-')[0]), int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[0].split('-')[1]), int(issueobject[i].raw[u'fields']
                                                                                                                                                                                                                    [u'resolutiondate'].split('T')[0].split('-')[2]), int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[1].split(':')[0]), int(issueobject[i].raw[u'fields'][u'resolutiondate'].split('T')[1].split(':')[1])))
            delta_t.append((ymd_resdate[i] - ymd_create[i]).days)

        self.result = np.var(np.array(delta_t))
        return self.result
于 2018-03-22T21:28:42.847 回答
0

strptime 不支持解析时区。这段代码对我有用

from datetime import datetime
createdTime = datetime.strptime(issue.fields.created.split(".")[0], '%Y-%m-%dT%H:%M:%S')
resolvedTime = datetime.strptime(issue.fields.resolutiondate.split(".")[0], '%Y-%m-%dT%H:%M:%S')
duration = resolvedTime - createdTime
于 2021-02-08T13:04:52.827 回答