【发布时间】:2015-09-07 13:57:14
【问题描述】:
我知道有一些关于在 Python 中使用 timedelta 对象的帖子,Python 文档足够清晰,可以理解所有内容。但我无法弄清楚一件事。假设我们有两个日期:
t1 = 'Fri 11 Feb 2078 00:05:21 +0400'
t2 = 'Mon 29 Dec 2064 03:33:48 -1100'
我使用下面的代码解析了t1 和t2 以在几秒钟内找出它们之间的区别:
def offset(arg):
return timedelta(hours = arg / 100, minutes = arg % 100)
def normalize(time, offset, sign):
return time+offset if sign == '-' else time-offset
def main():
t1offset = offset(int(t1[-5:]))
t2offset = offset(int(t2[-5:]))
t1 = normalize(datetime.strptime(t1[:-6],
"%a %d %b %Y %H:%M:%S"), t1offset, t1[-5])
t2 = normalize(datetime.strptime(t2[:-6],
"%a %d %b %Y %H:%M:%S"), t2offset, t2[-5])
if t1>t2:
print (t1-t2).total_seconds()
elif t2>t1:
print (t2-t1).total_seconds()
else:
print 0
正确答案是|t1-t2| = 413962293,而我的结果是414041493。相差 79200 秒 -> 22 小时。我究竟做错了什么?我跳过了什么或者我应该考虑什么来解决这个问题?
【问题讨论】:
-
谁投票结束,这是一个完全有效的问题,有足够的代码可以轻松重现问题。
-
@Andrey 但它不是重现问题的 minimal 代码(请参阅minimal reproducible example),因为 OP 未能进行基本的二进制搜索调试。跨度>
-
@jonrsharpe 代码不是绝对最小但足够小,不完美但很好理解问题。这个问题还不够糟糕,可以关闭。
-
提示:t1:
Fri 11 Feb 2078 00:05:21 +0400-->datetime.datetime(2078, 2, 10, 20, 5, 21)而 t2:Mon 29 Dec 2064 03:33:48 -1100-->datetime.datetime(2064, 12, 28, 16, 33, 48)。那么+0400和-1100都会减少转换时间?
标签: python timedelta python-datetime