如何将多种时间格式转化成统一格式呢

2020-04-14 02:12:54 +08:00
 SlipStupig

遇到了一个困难,需要将多种时间字符串转化成datetime对象,例如:

2019-10-24 09:20:44
2020-04-13
2019-11-04  13:11
04 月 13 日 10:41
2012 年 7 月 13 日
.....

本来以为挺简单,但是由于时间格式太多了,不好一个个去适配,有什么办法可以自动识别,并且转化成标准时间格式呢?

1998 次点击
所在节点    Python
4 条回复
Trim21
2020-04-14 02:20:02 +08:00
python-dateutil
netnr
2020-04-14 08:00:52 +08:00
用正则匹配后在组装,首先替换两个空格为一个空格

\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}
\d{4}-\d{2}-\d{2}
\d{4}-\d{2}-\d{2} \d{2}:\d{2}
\d{2} 月 \d{2} 日 \d{2}:\d{2}
\d{4} 年 (.*) 月 (.*) 日
Cmdhelp
2020-04-14 10:19:04 +08:00
python-arrow
imanux
2020-04-14 13:39:28 +08:00
推荐使用 moment, 比 arrow 轻量一些.

```python

def date_identify():
mixed = [
'2019-10-24 09:20:44',
'2020-04-13',
'2019-11-04 13:11',
'04 月 13 日 10:41',
'2012 年 7 月 13 日',
]
for m in mixed[:3]:
print(moment.date(m).format('YYYYMMDD HH:mm:ss'))

ch1 = mixed[3]
print(moment.date(ch1, 'MM 月 DD 日 HH:mm').format('YYYYMMDD HH:mm:ss'))

ch1 = mixed[4]
print(moment.date(ch1, 'YYYY 年 M 月 DD 日').format('YYYYMMDD HH:mm:ss'))

```

当然如果还有更多的格式, 需要手动一个个匹配的.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/662154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX