在过去的一个小时里,我一直在研究 Python 文档和许多 SO 问题;请原谅我是另一个被 Python 时差之谜所困的 Python 新手。
我的目标是确定当前时间和某个日期/时间之间的差异,无论是在过去/未来,并返回一个可行的格式,例如秒。
例如,如果输入是下午 2:00 和下午 4:00(现在),我希望它说“-7200”,表示事件发生在两小时前。如果输入是周五下午 4:00(现在)和周日下午 5:00,则输出应该是“176400”秒,表示从现在开始的两天零一小时。
这是我尝试过的事情...
我的第一个版本是一个函数,它采用字符串时间戳并将其拼凑成多个变量,然后将它们进行比较。它很笨重,有很多错误,我想如果我把它贴在这里我会负责程序员的吐槽。
我偶然发现了这个神奇的 timedelta 函数并探索了文档和 SO,但我不认为它符合我的要求。
我的想法是将两个时间戳转换为自纪元以来的秒数,然后减去,但如果减法的顺序错误(如果事件在未来,则情况不同),这会成为一个问题,我想添加 if 语句来检查秒的符号会很笨重,需要避免。
这是我当前的代码(仍然需要修复“双向”比较),来自先前解决的 SO 问题:
now = time.strftime("%a %b %d %H:%M:%S %Y")
then = time.ctime(os.path.getmtime("x.cache"))
tdelta = datetime.strptime(now, '%a %b %d %H:%M:%S %Y') - datetime.strptime(then, '%a %b %d %H:%M:%S %Y')
而且我觉得我应该能够以某种方式从中提取秒数,就像在这个问题中一样: Python's timedelta: Can't I just get in any time unit I want the value of the entire Difference?
但我不知道如何连接这些点。
我怎样才能做到这一点?