Python日期比较
时间:2020-03-06 14:41:46 来源:igfitidea点击:
我想找出一个特定的python datetime对象是否早于X小时或者分钟。我正在尝试做类似的事情:
if (datetime.now() - self.timestamp) > 100 # Where 100 is either seconds or minutes
这会产生类型错误。
在python中进行日期时间比较的正确方法是什么?我已经看过WorkingWithTime,它很接近,但不完全是我想要的。我假设我只希望datetime对象以秒为单位,以便可以进行常规的int比较。
请发布日期时间最佳做法列表。
解决方案
我们可以减去两个datetime对象以找出它们之间的差异。
我们可以使用datetime.fromtimestamp
来解析POSIX时间戳。
我们可以结合使用返回对象的"天"和"秒"属性来找出答案,如下所示:
def seconds_difference(stamp1, stamp2): delta = stamp1 - stamp2 return 24*60*60*delta.days + delta.seconds + delta.microseconds/1000000.
如果我们始终希望秒数为正数,请在答案中使用abs()。
要了解时间戳过去几秒,可以像这样使用它:
if seconds_difference(datetime.datetime.now(), timestamp) < 100: pass
将差异与我们创建的时间增量进行比较:
if datetime.datetime.now() - timestamp > datetime.timedelta(seconds = 5): print 'older'
使用datetime.timedelta
类:
>>> from datetime import datetime, timedelta >>> then = datetime.now() - timedelta(hours = 2) >>> now = datetime.now() >>> (now - then) > timedelta(days = 1) False >>> (now - then) > timedelta(hours = 1) True
示例可以写成:
if (datetime.now() - self.timestamp) > timedelta(seconds = 100)
或者
if (datetime.now() - self.timestamp) > timedelta(minutes = 100)
像这样:
# self.timestamp should be a datetime object if (datetime.now() - self.timestamp).seconds > 100: print "object is over 100 seconds old"