if len ( b ) >= 2 : time . strptime ( strdate , "%Y-%m-%d %H:%M:%S" ) # time.strptime(check_date[ck_field], "Y年%m-%d %H:%M:%S") elif 0 < len ( b ) < 2 : time . strptime ( strdate , "%Y-%m-%d %H:%M" ) else : time . strptime ( strdate , "%Y-%m-%d" ) except Exception as e : logger . error ( "字段:{0}>>>>>>>对应值{1}:不是时间格式" . format ( check_date [ ck_field ] , check_date ) ) strdate = “2020-1-2 12:1:1”b = re.findall(":", strdate)try: if len(b) &gt;= 2: time.strptime(strdate, "%Y-%m-%d %H:%M:%S") # time.strptime(check_date[ck_field], "Y年%m-%d %H:%M:%S") elif 0 &lt; len(b) &lt; 2: time.strptime( 最近遇到一个朋友问了一个小需求,怎么 判断 一个 字符串 是不是日期。 这个问题看起来很简单,实际上稍加分析会发现里面有很多的坑,真要做出一个功能非常完善的 判断 函数来并不简单的事情。 需求分析: 首先: 判断 字符串 是不是日期格式,最佳最简便的方法是用time模块里面的strptime尝试将 字符串 转成格式化时间对象,如果转换成功那么肯定是日期格式,如果转换失败那么肯定不是日期格式。 其次:日期格式有多种多样,必须考虑到各种可能性并将其列入模板加以匹配,多次尝试strptime,这样才能避免错漏。 第三:如果要判