6

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

2/26/2009 3:00 PM

我确信有一些内置的并且非常简单,但我找不到。非常感谢您之前运行过此操作并提出建议。

4

4 回答 4

22

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

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
于 2013-08-30T18:33:34.210 回答
3

这就是你的做法:

    from datetime import datetime

    def validate(datetime_string):
        try:
            return datetime.strptime(datetime_string,"%m/%d/%Y %I:%M %p")
        except ValueError:
            return False
于 2013-08-30T18:35:48.037 回答
1
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)
于 2013-08-30T18:41:59.383 回答
0

您可以结合使用语言环境模块time.strptime()来确保日期/时间的顺序正确(月、日、年等)。或者,你可以做简单的正则表达式......

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

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

祝你好运!

于 2013-08-30T18:34:30.760 回答