擅长:python、mysql、java
<p>我建议避免使用正则表达式从字符串中提取日期。如果已知可能的格式数,那么只需尝试转换为<code>datetime</code>对象。如果转换失败,请尝试下一种可能的格式。你知道吗</p>
<p>例如:</p>
<pre><code>from datetime import datetime
test_dates = ["2018-7-12 13:00:00", "13:00:00 2018-7-12"]
date_formats = ["%Y-%m-%d %H:%M:%S", "%H:%M:%S %Y-%m-%d"]
for date in test_dates:
for date_format in date_formats:
try:
dt = datetime.strptime(date, date_format)
print(dt)
except ValueError as e:
pass
</code></pre>
<p>这样做的好处是可以跳过非法日期,比如<code>2018-09-31</code>,并且可以正确处理闰年。它也更容易遵循。你知道吗</p>