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

imf*_*den 4 python datetime

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

ValueError: 'h' is a bad directive in format '%m/%d/%Y%h:%m:%s'
Run Code Online (Sandbox Code Playgroud)

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

我的日期是用这种格式写的:"12/28/13 16:49:19","m/d/yh: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)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 7

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

date_format = "%m/%d/%y %H:%M:%S"
Run Code Online (Sandbox Code Playgroud)

请参阅strftime()strptime()行为文档.%h不作为格式字符存在.

而不是使用现在time.strftime('%c')代表,然后再次解析,使用:

b = datetime.now()
Run Code Online (Sandbox Code Playgroud)

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

delta = b - a
print(delta.total_seconds() // 60)
Run Code Online (Sandbox Code Playgroud)

或者将delta对象与另一个对比timedelta():

if delta > timedelta(hours=23):
Run Code Online (Sandbox Code Playgroud)

演示:

>>> 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)
Run Code Online (Sandbox Code Playgroud)