在Python2.7中,如何计算两个带时区的时间字符串的差?
我有两条线在Python2.7中,如何计算两个带时区的时间字符串的差?,python,parsing,datetime,timezone,timedelta,Python,Parsing,Datetime,Timezone,Timedelta,我有两条线 s1 = "2013-11-21T07:45:51ZUTC+0000" # Europe s2 = "2013-11-21T13:15:28ZUTC+0530" # India 我想知道以秒为单位的差异(应该是23秒)。 我试过: 这不是正确的结果。我必须做什么才能得到正确的结果?蒂亚 假设日期字符串的格式相同。通过从字符串中删除'ZUTC',可以帮助解析函数找出正确的日期。像这样: from dateutil.parser import parse s1 = "2013-11-
s1 = "2013-11-21T07:45:51ZUTC+0000" # Europe
s2 = "2013-11-21T13:15:28ZUTC+0530" # India
我想知道以秒为单位的差异(应该是23秒)。
我试过:
这不是正确的结果。我必须做什么才能得到正确的结果?蒂亚 假设日期字符串的格式相同。通过从字符串中删除'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()
实际上是23秒。偏移量相当大。。格式奇怪。结果,时区被解析为错误的方向。与您的期望值相差11小时。非常感谢!不幸的是,这适用于Python3.2.3,但不适用于Python2.7.3。我仍然需要Python2并重新表述了我的问题;它假装使用ISO8601,但也使用偏移量(
Z
表示UTC)。删除ZUTC
至少使其符合ISO8601标准。谢谢,此解决方案运行良好!我甚至可以找到添加了错误“Z”的罪犯代码,并以正确的方式解决此问题。
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()
>>> 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'