此程序旨在要求日期为dd / mm / yyyy。然后应该检查用户是否以正确的格式(dd / mm / yyyy)输入日期。我的程序无法正确识别格式。这是我的计划:
date = (input("enter the date as dd/mm/yyyy: "))
date = day, month, year = date.split("/")
if date == (day + '/' + month + '/' + year):
print (date)
if len(day) == 1 or len(day) == 2:
print("1")
if len(month) == 1 or len(month) == 2:
print("2")
if len(year) == 4:
print ("3")
else:
if len(day) == 1 or len(day) == 2:
print("4")
if len(month) == 1 or len(month) == 2:
print("5")
if len(year) == 4:
print ("6")
目前打印的数字除了检查日期的有效性之外别无其他目的。到目前为止,只打印了4,5和6,这意味着我的程序无法识别日期的格式。
答案 0 :(得分:5)
您的解决方案无效,因为date=day, month, year = date.split("/")
将date
设置为list
,然后您将其与string
({{1}进行比较}})。但是,您的解决方案是一个已解决的问题,请改为:
day + '/' + month + '/' + year
此外,您可能稍后将其转换为import datetime
date = (input("enter the date as dd/mm/yyyy: "))
try: datetime.datetime.strptime(date,"%d/%m/%Y")
except ValueError: # incorrect format
对象,因此您可以在datetime
块中执行此操作!
作为进一步优化,请注意许多用户不希望使用try
作为日期信息输入日期!对输入进行一些自省,并适当调整日期搜索。
/
现在,您的代码将以2014年2月2日的有效date = input("enter the date: ")
if "-" in date: datesep = "-"
elif "/" in date: datesep = "/"
elif "." in date: datesep = "."
else: datesep = ""
if len(date) < 6: yeartype = "%y"
elif date[-4:-2] not in ("19","20"): yeartype = "%y"
else: yeartype = "%Y"
try: date = datetime.datetime.strptime(date,"%d{0}%m{0}{1}".format(datesep,yeartype))
except ValueError: # invalid date
对象结束:
答案 1 :(得分:2)
您可以使用datetime
模块:
import datetime
def checkdate(date):
try:
datelist = date.split('/')
datetime.datetime(year=int(datelist[2]), month=int(datelist[1]),day=int(datelist[0]))
return True
except:
return False