如何在Python 2.7中计算两个带时区的时间字符串的差异?

时间:2013-11-21 11:04:33

标签: python parsing datetime timezone timedelta

我有两个字符串

s1 = "2013-11-21T07:45:51ZUTC+0000" # Europe
s2 = "2013-11-21T13:15:28ZUTC+0530" # India

我想知道秒数的差异(应该是23秒)。 我试过了:

from dateutil.parser import parse
dt1 = parse(s1)
dt2 = parse(s2)
(dt1-dt2).total_seconds()
-39577.0

这不是正确的结果。我该怎么做才能得到正确的结果? TIA!

2 个答案:

答案 0 :(得分:2)

鉴于您的日期字符串格式相同。您可以通过从字符串中删除“ZUTC”来帮助解析函数找出正确的日期。像这样:

from dateutil.parser import parse

s1 = "2013-11-21T07:45:51ZUTC+0000" # Europe
s2 = "2013-11-21T13:15:28ZUTC+0530" # India

def new_parse(string):
    return parse(string.replace('ZUTC', ''))

dt1 = new_parse(s1)
dt2 = new_parse(s2)
print (dt1-dt2).total_seconds()

答案 1 :(得分:1)

>>> import datetime
>>> str(datetime.datetime.strptime("2013-11-21T07:45:51ZUTC+0000", "%Y-%m-%dT%H:%M:%SZ%Z%z") - datetime.datetime.strptime("2013-11-21T13:15:28ZUTC+0530", "%Y-%m-%dT%H:%M:%SZ%Z%z"))
'0:00:23'

实际上是23秒。