我正在编写一个程序来验证XML文件的各个部分。我想验证的一点是日期时间格式。我已经在论坛上阅读了有关使用time.strptime()
的内容,但这些示例对我来说并不是很有用,而且有点超过我的专业知识。任何人都有任何想法如何验证以下内容。这是日期和时间必须的格式。
2/26/2009 3:00 PM
我确信有一些内置的东西很容易,但我找不到。非常感谢你以前经营过并提出建议。
答案 0 :(得分:20)
是的,您可以使用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
答案 1 :(得分: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
答案 2 :(得分: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)
答案 3 :(得分:0)
您可以将locale module与time.strptime()
结合使用,以确保日期/时间符合正确的顺序(月,日,年等)。或者,你可以做简单的正则表达式...
pattern = re.compile(r'\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2} (AM|PM)')
......我不是一个正则表达式的职业选手,可能有更好的模式。
您还可以使用datetime
模块创建一个具有区域设置常量的新日期时间对象,并将其转换为正确的类型(日,月,年)。