代码_日期的验证
【需求描述】: 在手机的系统设置中,系统日期的有效范围为1971年1月1日到2035年12月31日
【实现功能】: 输入三个数,分别表示年、月、日,判断是否为一个合法的日期输入,且日期有效范围为1971年1月1日到2035年12月31日
【开发设计】: 略
【代码及测试数据】:
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') #输入三个数,分别表示年月 日,判断是否为一个合法日期输入 def judge_date(y, m, d): #判断年份、月份、日期是否为整数 try: year = int(y) month = int(m) day = int(d) except ValueError,e: return [1, "年或月或日只能为整数"] #判断年份的范围 if year < 1971 or year > 2099: return [1,"年份的范围只能是【1971, 2099】"] months=[31,28,31,30,31,30,31,31,30,31,30,31] #闰年的话2月最多29天 if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): months[1]=29 if month < 1 or month > 12: return [1, "月份只能为【1, 12】, 而实际输入的为%d" % month] elif day < 1 or day > months[month - 1]: return [1, "%d月份只能为【1, %d】, 而实际输入的为%d" % \ (month, months[month - 1], day)] else: return [0, "%d-%d-%d" % (year, month, day)] #测试数据 #有效测试数据 valid_params = { "param_01": ["1971", "1", "1"], "param_02": ["2035", "12", "31"], "param_03": ["1980", "2", "29"], "param_04": ["1994", "3", "31"], "param_05": ["1999", "2", "28"], "param_06": ["2000", "4", "30"], "param_07": ["2010", "5", "31"], "param_08": ["2028", "6", "30"], "param_09": ["2030", "7", "31"], "param_10": ["2035", "8", "31"], "param_11": ["2035", "9", "30"], "param_12": ["2020", "10", "31"], "param_13": ["2000", "11", "30"] } #无法测试数据 invalid_params = { "param_01": ["1972", "01", "32"], "param_02": ["1972", "02", "0"], "param_03": ["1985", "07", "a"], "param_04": ["1999", "04", "会"], "param_05": ["1999", "00", "20"], "param_06": ["2000", "13", "18"], "param_07": ["2012", "B", "31"], "param_08": ["2030", "+", "10"], "param_09": ["0000", "12", "18"], "param_10": ["4038", "11", "38"], "param_11": ["20+)", "13", "20"], "param_12": ["++++", "-*", "%%"] } #验证过程 print "-------------有效值的测试-----------" for valid_value in valid_params.values(): #print valid_value result = judge_date(valid_value[0], valid_value[1], valid_value[2]) if result[0] == 0: print "【Pass】, 输入的年:%s, 月:%s ,日: %s, 输出: %s" % \ (valid_value[0],valid_value[1], valid_value[2], result[1]) else: print "【Fail】, 输入的年:%s, 月:%s ,日: %s, 输出: %s" %\ (valid_value[0],valid_value[1], valid_value[2], result[1]) print "\n-------------无效值的测试----------" for invalid_value in invalid_params.values(): #print invalid_value result = judge_date(invalid_value[0], invalid_value[1], invalid_value[2]) if result[0] == 1: print "【Pass】, 输入的年:%s, 月:%s ,日: %s, 错误信息: %s" %\ (invalid_value[0],invalid_value[1], invalid_value[2], result[1]) else: print "【Fail】, 输入的年:%s, 月:%s ,日: %s, 错误信息: %s" %\ (invalid_value[0],invalid_value[1], invalid_value[2], result[1])
【运行结果】: