我有2个函数作为更大程序的一部分,我想在下面强调:
def compare_date(date1,date2):
date_tm_obj_url = datetime.strptime(date1, check_url_datefmt(date1))
date_tm_obj_usr = datetime.strptime(date2, '%b %d %Y %I:%M %p')
return (date_tm_obj_url > date_tm_obj_usr)
compare_date
旨在比较2个日期时间对象(日期)并检查哪个比另一个更新。其中一个日期是从网页上删除后得到的,另一个是从用户处获得的(当程序运行时,它会询问用户日期)
网页上的日期采用Submitted Jan 15th 2018 11:03 PM by
格式。但是为了管理格式因1st
,2nd
,3rd
和nth
等情况而异的情况,我编写了另一个函数check_url_datefmt(date1)
{ {1}}来电:
compare_date
但我看到所有情况,它只匹配最后一个def check_url_datefmt(date):
print (str(date))
fmt_lst=['Submitted %b %dst %Y %I:%M %p by','Submitted %b %dnd %Y %I:%M %p by','Submitted %b %drd %Y %I:%M %p by','Submitted %b %dth %Y %I:%M %p by']
if str(date) == str(fmt_lst[0]):
return 'Submitted %b %dst %Y %I:%M %p by'
elif str(date) == str(fmt_lst[1]):
return 'Submitted %b %dnd %Y %I:%M %p by'
elif str(date) == str(fmt_lst[2]):
return 'Submitted %b %drd %Y %I:%M %p by'
else:
return 'Submitted %b %dth %Y %I:%M %p by'
。事实上,对于案例else
,它会返回Submitted Jan 3rd 2018 11:03 PM by
,因此我收到此错误:
'Submitted %b %dth %Y %I:%M %p by'
我做错了什么?如何克服这个?
答案 0 :(得分:1)
check_url_datefmt(date)
无法正常工作,因为date
是一个实际的日期字符串,因此与您尝试的任何日期格式字符串都不匹配。换句话说,字符串Submitted Jan 3rd 2018 11:03 PM by
与fmt_lst
中的任何字符串都不匹配。
最简单的解决方案是使用所有格式调用datetime.strptime()
,直到其中一个匹配。