import re
import datetime
datetime_example = [
'2021',
'2021年',
'2021-02',
'2021-2',
'2021/02',
'2021年02月',
'2021-05-01',
'2021/05/01',
'2021年05月01日',
'2021年05月01日 09时',
'2021年05月01日 09',
'2021年05月01日 09时21分',
'2021年05月01日 09:21',
'2021年05月01日 09时21分01秒',
'2021年05月01日 09:21:01',
'2021-05-01 09时21分01秒',
'2021-05-01 09:21:01'
]
def parse_datetime(string):
"""
字符串中解析时间
:param string: 格式化时间,日期分隔符支持-,/,日期中文(年,月,日)。
:return: 时间类型/None
"""
if not isinstance(string, str):
raise TypeError('string must be str')
datetime_pattern = re.compile(
'(?P<year>\d{4})[年/\-]?(?P<month>\d{1,2})?[月/\-]?(?P<day>\d{1,2})?日? ?(?P<hour>\d{1,2})?[时:]?(?P<minute>\d{1,2})?[分:]?(?P<second>\d{1,2})?秒?'
)
d = re.search(datetime_pattern, string)
if d:
match_dict = d.groupdict()
else:
return None
datetime_dict = {}
for k in match_dict:
if match_dict[k]:
datetime_dict[k] = int(match_dict[k])
for date_str in ['month','day']:
if date_str not in datetime_dict:
datetime_dict[date_str] = 1
return datetime.datetime(**datetime_dict)
if __name__ == '__main__':
for i in datetime_example:
print(parse_datetime(i))
字符串日期解析函数
最新推荐文章于 2022-11-03 18:06:59 发布