python - 我应该如何在不考虑 Python 顺序的情况下查找日期和时间?

标签 python regex datetime

import re
exp1="2018-7-12 13:00:00"
exp2="13:00:00 2018-7-12"
reg= r'\d\d\d\d[./-](0?[1-9]|1[0-2])[./-](0?[1-9]|[12][0-9]|3[01]) (00|[0- 9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])'
compDate = re.search(reg,exp1)

我也尝试过先行表达式,但它们无法正常工作。

欢迎任何其他解决方案

最佳答案

我建议避免使用正则表达式来尝试从字符串中提取日期。如果已知可能格式的数量,则只需尝试转换为 datetime 对象。如果转换失败,请尝试下一种可能的格式。

例如:

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

这具有跳过非法日期(例如 2018-09-31)的好处,并且可以正确处理闰年。它也更容易遵循。

关于python - 我应该如何在不考虑 Python 顺序的情况下查找日期和时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51872721/

相关文章:

c# - 比较日期时间的最可靠方法?

Python就地配置值更新

python - 如何使用 python 在具有许多相似行的大文件中获取特定行?

c# - 使用正则表达式查找两个字符串的完全相等性

regex - 怎么样?在正则表达式中使量词变得懒惰

javascript - 使用正则表达式格式化负数

python - 减去时间并得到以年为单位的输出,四舍五入到小数点后两位

javascript - Javascript 毫秒问题

python - matplotlib 线框图/3d 图方法

Python 脚本在引导时执行时不写入文件