这是我迄今为止所做的。我是python的新手。我想知道的是当日期字符串中存在字符时如何获得无效日期。例如01 / x1 / 2012 如果输入日期为负数,则打印出无效日期。 不使用导入或日历
dateStr = input("Date: ")
monthStr, dayStr, yearStr = dateStr.split("/")
months = ["January", "February","March", "April", "May", "June", "July", "August","September","October", "November","December"]
monthStr = months[int(monthStr)- 1]
print ("The date is:", monthStr, dayStr+",", yearStr)
if chr in dateStr:
print("Invalid date")
答案 0 :(得分:3)
使用datetime
:
import datetime
date_str = input("Date: ")
try:
date = datetime.datetime.strptime(date_str,'%m/%d/%Y')
except ValueError:
print ("Bad date")
没有日期时间:
def parse_date(date_str):
pieces = date_str.split('/')
try:
for piece in pieces:
assert int(piece) > 0
except (ValueError,AssertionError):
print ("Bad Date")
else:
print ("Good date")
parse_date('01/x1/2010') #Bad Date
parse_date('01/-1/2010') #Bad Date
parse_date('01/01/2010') #Good date
答案 1 :(得分:0)
我想说,用正则表达式解析日期的有效性。为了帮助您入门,此正则表达式将匹配xx / xx / xxxx格式中的任何日期,其中x是数字
/d{1,2}//d{1,2}//d{4}
您可以自定义正则表达式并检查有效匹配。
修改:看起来使用日期时间是个更好的主意