Pythondate比较

我想找出一个特定的Pythondate时间对象是否比X小时或分钟更旧。 我正在尝试做类似于:

if (datetime.now() - self.timestamp) > 100 # Where 100 is either seconds or minutes 

这会产生一个types错误。

在Python中做date时间比较的正确方法是什么? 我已经看到了WorkingWithTime ,但是这并不是我想要的。 我假设我只想以秒为单位表示datetime对象,以便我可以做一个正常的int比较。

请发布date时间最佳实践列表。

6 Solutions collect form web for “Pythondate比较”

使用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) 

将差异与您创build的timedelta进行比较:

 if datetime.datetime.now() - timestamp > datetime.timedelta(seconds = 5): print 'older' 

替代scheme:

 if (datetime.now() - self.timestamp).total_seconds() > 100: 

假设self.timestamp是一个date时间实例

您可以使用返回对象的“天”和“秒”属性的组合来找出答案,如下所示:

 def seconds_difference(stamp1, stamp2): delta = stamp1 - stamp2 return 24*60*60*delta.days + delta.seconds + delta.microseconds/1000000. 

如果您总是需要正数秒,则在答案中使用abs()。

要发现过去的时间戳有多less秒,可以这样使用它:

 if seconds_difference(datetime.datetime.now(), timestamp) < 100: pass 

您可以减去两个date时间对象来查找它们之间的差异。
您可以使用datetime.fromtimestamp来parsingPOSIX时间戳。

像这样:

 # self.timestamp should be a datetime object if (datetime.now() - self.timestamp).seconds > 100: print "object is over 100 seconds old" 
  • 如何find与正则expression式的重叠匹配?
  • 我如何有select地逃避Pythonstring中的百分比(%)?
  • 如何为python http连接指定经过身份validation的代理?
  • 如何获得Python中的PATH环境variables分隔符?
  • 使用Python for Linux模拟Key Press事件
  • 什么是Flask中的“端点”?
  • Python - 自我,没有自我和cls
  • Python&Ctypes:将一个结构传递给一个函数,作为取回数据的指针
  • 我怎样才能更多地了解Python的内部?
  • 如何删除Python中的文件夹的内容?
  • Django:用户login时发出信号?