有人可以帮我计算两个日期邮票之间的时差吗?

时间:2017-11-14 11:42:16

标签: python datetime timestamp difference

我的日期格式如下: (u'Task',u'2017-01-06T02:23:44.000-0500')..第1阶段 (u'Task',u'2017-01-06T05:27:10.000-0500')..阶段2 (u'Task',u'2017-01-10T14:42:44.000-0500')......第2阶段

我必须计算每个阶段之间的时差 我正在使用它(我知道这是不正确的: - ()

    import datetime as dt
    date_format = "yyyy-mm-ddThh-mm-ss"
    x1= d1.split('T')[0]+' '+(d1.split('T'))[1][:8]
    x2= d2.split('T')[0]+' '+(d2.split('T'))[1][:8]

    d1=('2017-01-06T02:23:44.000-0500')
    d2=('2017-01-19T17:30:21.000-0500')

#some string slicing to get rid of T and the timezone indicator 
    start_dt = dt.datetime.strptime(x1, 'yyyy-mm-ddhh:mm:ss')
    end_dt = dt.datetime.strptime(x2, 'yyyy-mm-ddhh:mm:ss')

    x = start_dt - end_dt

它返回格式不匹配错误

有人可以帮我找到第1阶段和第2阶段之间的时间我必须递归计算

3 个答案:

答案 0 :(得分:1)

主要是,帕特里克写道,格式字符串是错误的。您可以检查格式字符串的写入方式here。此外,变量d1d2在声明之前使用,减去日期通常以difference = older_date - newer_date的方式工作。简而言之:

import datetime as dt

date_format = "%Y-%m-%d %H:%M:%S"

d1=('2017-01-06T02:23:44.000-0500')
d2=('2017-01-19T17:30:21.000-0500')

x1 = d1.replace('T', ' ').split('.')[0]
x2 = d2.replace('T', ' ').split('.')[0]

start_dt = dt.datetime.strptime(x1, date_format)
end_dt = dt.datetime.strptime(x2, date_format)

x = end_dt - start_dt
print(x)

打印:

13 days, 15:06:37

x1x2的分割是个人品味,在索引处切换只是要求在格式更改期间或使用不同的区域设置时代码被破坏。

答案 1 :(得分:0)

您的格式字符串应为'%Y-%m-%d%H%M%S'。 所以:

start_dt = dt.datetime.strptime((d1.split('T')[0]+''+(d1.split('T'))[1][:8]), '%Y-%m-%d%H:%M:%S')
end_dt = dt.datetime.strptime((d2.split('T')[0]+''+(d2.split('T'))[1][:8]), '%Y-%m-%d%H:%M:%S')

答案 2 :(得分:0)

你可以这样做:

import datetime as dt

# parses the string in Format 'yyyyMMddHHMMSS'
def parse(s): 
    return dt.datetime.strptime(s,"%Y%m%d%H%M%S")

# removes all T-: from string, leaves to . for split, returns only left part of split                     
def reformat(s): 
    return ''.join([x for x in s if x not in "T-:"]).split('.')[0]

d1=('2017-01-06T02:23:44.000-0500')
d2=('2017-01-19T17:30:21.000-0500')

f1 = reformat(d1)
f2 = reformat(d2)

start = parse(f1)
end   = parse(f2)
delta = end - start

print(d1 + "=>" + f1)
print(d2 + "=>" + f2)
print(delta)

打印:

2017-01-06T02:23:44.000-0500=>20170106022344
2017-01-19T17:30:21.000-0500=>20170119173021
13 days, 15:06:37