如何在Python中验证日期
你好,我想在Python中验证一些日期。但是我遇到一个问题,我有一个特定的日期范围,比如我的日期是从1/1/2014
到08/07/2014
。所以我想知道怎么才能同时验证日期的格式和具体的值。我查看了这个链接,但它只验证了格式,并没有验证具体的值。
import time
date = input('Date (mm/dd/yyyy): ')enter date here
try:
valid_date = time.strptime(date, '%m/%d/%Y')
except ValueError:
print('Invalid date!')
3 个回答
1
这段内容是关于编程问题的讨论,涉及到一些技术细节。它可能会提到如何解决特定的编程难题,或者分享一些代码示例来帮助理解。具体的代码块
import datetime
inputDate = input("Enter the date in format 'dd/mm/yy' : ")
day,month,year = inputDate.split('/')
isValidDate = True
try :
datetime.datetime(int(year),int(month),int(day))
except ValueError :
isValidDate = False
if(isValidDate) :
print ("Input date is valid ..")
else :
print ("Input date is not valid..")
可能包含了实际的代码,展示了如何实现某个功能或解决某个问题。
2
我想建议把这个放到一个函数里:
from datetime import datetime
def validate_date(input_date, first=datetime(2014, 1, 1),
last=datetime(2014, 8, 7),
fmt='%m/%d/%Y'):
"""Return a validated datetime.datetime or None.
If the date has the wrong format return None, or if it is not in
the range [first,last] also return None. Otherwise return the
input_date as a datetime.datetime object.
"""
try:
d = datetime.strptime(input_date, fmt)
if not (first <= d <= last):
raise ValueError
except ValueError:
return None
else:
return d
# Example usage...
valid_date = validate_date(input('Date mm/dd/yyyy: '))
if valid_date is not None:
print(valid_date)
else:
print('Date not ok!')
6
与其使用 time.strptime()
,不如使用 datetime.datetime.strptime()
,然后检查得到的对象是否在你设定的范围内:
from datetime import datetime, date
date_input = input('Date (mm/dd/yyyy): ')
try:
valid_date = datetime.strptime(date_input, '%m/%d/%Y').date()
if not (date(2014, 1, 1) <= valid_date <= date(2014, 8, 7)):
raise ValueError('Date out of range')
except ValueError:
print('Invalid date!')
如果没有出现异常,那么 valid_date
就会是一个 datetime.date()
实例。