如果日期字符串中有字符或否定,我该如何写一个语句?

时间:2012-10-25 01:27:35

标签: python date

这是我迄今为止所做的。我是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")

2 个答案:

答案 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}

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

修改:看起来使用日期时间是个更好的主意