2

这是我到目前为止所做的。我是 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")
4

2 回答 2

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
于 2012-10-25T01:30:32.907 回答
0

我会说,用正则表达式解析日期的有效性。为了让你开始,这个正则表达式将匹配 xx/xx/xxxx 格式的任何日期,其中 x 是一个数字

/d{1,2}//d{1,2}//d{4}

您可以自定义您的正则表达式并检查有效匹配。

编辑:看起来使用日期时间是一个更好的主意

于 2012-10-25T01:30:49.277 回答