关于datetime:如何使用Python验证特定的日期和时间格式

How to validate a specific Date and Time format using Python

我正在编写一个程序来验证XML文件的各个部分。 我想验证的一点是日期时间格式。 我已经在论坛上阅读了关于使用time.strptime()的内容,但这些示例对我来说并不是很有用,而且有点超过我的专业知识。 任何人都有任何想法如何验证以下内容。 这是日期和时间必须的格式。

1
2/26/2009 3:00 PM

我确信有一些内置的东西很容易,但我找不到。 非常感谢你以前经营过这个并提出建议。


是的,您可以使用datetime.strptime()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from datetime import datetime


def validate_date(d):
    try:
        datetime.strptime(d, '%m/%d/%Y %I:%M %p')
        return True
    except ValueError:
        return False


print validate_date('2/26/2009 3:00 PM')  # prints True
print validate_date('2/26/2009 13:00 PM')  # prints false
print validate_date('2/26/2009')  # prints False
print validate_date("Should I use regex for validating dates in Python?")  # prints False


这是你如何做到的:

1
2
3
4
5
6
7
    from datetime import datetime

    def validate(datetime_string):
        try:
            return datetime.strptime(datetime_string,"%m/%d/%Y %I:%M %p")
        except ValueError:
            return False


1
2
3
4
import datetime
parsed = datetime.datetime.strptime("2/26/2009 3:00 PM", r'%m/%d/%Y %H:%M %p')
iso_formatted = parsed.isoformat()
print(iso_formatted)


您可以使用与time.strptime()组合的区域设置模块来确保日期/时间处于正确的顺序(月,日,年等)。 或者,你可以做简单的正则表达式......

pattern = re.compile(r'\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2} (AM|PM)')
...我不是一个正则表达式的职业选手,可能有一个更好的模式。

您还可以使用datetime模块创建一个具有区域设置常量的新datetime对象,并将其转换为正确的类型(日,月,年)。

祝好运!