给定一个以strftime('%b %d, %Y %I:%M %p')
格式表示的字符串,比如'Apr 17, 2016 02:00 AM'
。
有没有办法检查这个时间是否已经过去?比如进行比较。
datetime.datetime.now().strftime('%b %d, %Y %I:%M %p')
如何将字符串'Apr 17, 2016 02:00 AM'
转换成时间格式
将字符串解析为datetime.datetime
实例,然后与datetime.now()
进行比较:
from datetime import datetime
dt = datetime.strptime('Apr 17, 2016 02:00 AM', '%b %d, %Y %I:%M %p')
if dt < datetime.now():
print('{} alread past'.format(dt))
您可能需要将其封装成一个函数:
def is_past(dt_string):
return datetime.strptime(dt_string, '%b %d, %Y %I:%M %p') < datetime.now()
然后像这样调用:
>>> is_past('Apr 17, 2016 02:00 AM')
False
>>> is_past('Apr 01, 2016 02:00 AM')
True
datetime.datetime.strptime()
类方法将字符串解析为datetime
对象:dt = datetime.datetime.strptime(string, '%b %d, %Y %I:%M %p')
if dt < datetime.datetime.now():
# in the past.
演示:
>>> import datetime
>>> string = 'Apr 17, 2016 02:00 AM'
>>> dt = datetime.datetime.strptime(string, '%b %d, %Y %I:%M %p')
>>> dt
datetime.datetime(2016, 4, 17, 2, 0)
>>> dt < datetime.datetime.now()
False
>>> datetime.datetime.now().isoformat()
'2016-04-15T09:55:09.907130'