if
len
(
b
)
>=
2
:
time
.
strptime
(
strdate
,
"%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) >= 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(
最近遇到一个朋友问了一个小需求,怎么
判断
一个
字符串
是不是日期。
这个问题看起来很简单,实际上稍加分析会发现里面有很多的坑,真要做出一个功能非常完善的
判断
函数来并不简单的事情。
需求分析:
首先:
判断
字符串
是不是日期格式,最佳最简便的方法是用time模块里面的strptime尝试将
字符串
转成格式化时间对象,如果转换成功那么肯定是日期格式,如果转换失败那么肯定不是日期格式。
其次:日期格式有多种多样,必须考虑到各种可能性并将其列入模板加以匹配,多次尝试strptime,这样才能避免错漏。
第三:如果要判