计算Python中两个日期时间值之间的时差

时间:2013-12-28 16:23:32

标签: python datetime

我想比较两个日期和时间,然后将这些信息用于其他内容。就像if delta > 23小时这样做,elif delta > 11小时,那样做等等。我认为这是一种合理的写法,但是python不会接受它!它说:

ValueError: 'h' is a bad directive in format '%m/%d/%Y%h:%m:%s'

h不是用Python编写小时的标准方法吗? :○

我的日期是用这种格式写的:“12/28/13 16:49:19”,“m / d / y h:m:s”如果有任何帮助的话!

from datetime import datetime
date_format = "%m/%d/%Y%h:%m:%s"
then=(dictionary["date"])
now= time.strftime("%c")
a = datetime.strptime(str(then), date_format)
b = datetime.strptime(str(now), date_format)
delta = b - a
print(delta.hour)

1 个答案:

答案 0 :(得分:7)

24小时格式是%H,大写H,不是小写。分钟和秒钟相同。你也需要一个空格,你有一年的格式没有世纪,所以使用小写y

date_format = "%m/%d/%y %H:%M:%S"

请参阅strftime() and strptime() behaviour documentation%h不作为格式字符存在。

而不是使用time.strftime('%c')来代表 now ,而是再次解析它,使用:

b = datetime.now()

datetime.timedelta个对象不具有 hours属性;从delta中的总秒数计算小时数:

delta = b - a
print(delta.total_seconds() // 60)

或将delta对象与另一个timedelta()进行比较:

if delta > timedelta(hours=23):

演示:

>>> from datetime import datetime
>>> date_format = "%m/%d/%y %H:%M:%S"
>>> datetime.strptime('12/28/13 16:49:19', date_format)
datetime.datetime(2013, 12, 28, 16, 49, 19)