我花了一个小时研究Python文档和许多这样的问题;请原谅我是另一个被Python的时间差之谜困住的Python新手。
我的目标是确定当前时间和某个日期/时间之间的差异,而不考虑过去/将来,并返回一个可行的格式,如秒。
例如,如果输入是2:00PM和4:00PM(现在),我希望它是“-7200”,表示两小时前发生的事件。如果输入是周五下午4:00(现在)和太阳下午5:00,则输出应为“176400”秒,表示从现在开始的两天零一小时。
以下是我试过的。。。
我的第一个版本是一个函数,它获取一个字符串时间戳并将其分段为多个变量,然后对它们进行比较。它很笨重,有很多错误,我想如果我把它贴在这里,我会对一个程序员的呕吐负责。
我偶然发现了这个神奇的timedelta函数,并探索了文档等等,但我不认为它能满足我的需求。
我本来想把这两个时间戳都转换成从epoch开始的秒,然后再进行减法,但是如果减法的顺序不对(如果事件是在未来,则会出现不同的情况),这就成了一个问题,我想添加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 whatever time unit I want the value of the entire difference?
但我不知道如何把这些点连起来。
我怎样才能做到这一点?
几个月前我也有同样的问题。你要找的是datetime.timedelta和datetime.datetime.fromtimestamp()。下面是一个如何使用它们来解决问题的示例。
这种方法有什么问题?
请注意,^{} 仅在Python 2.7<;中可用,但根据文档:
结果完全一样。
你应该可以使用
为了得到你想要的价值。这是因为} 对象,这是
tdelta
是一个^{datetime
对象之间的任何区别。几条注释:
strftime
后跟strptime
是多余的。您应该能够使用^{time.ctime
后跟strptime
比需要的工作要多。您应该能够使用^{datetime
对象。所以,你的最终密码可能是
相关问题 更多 >
编程相关推荐