zoukankan      html  css  js  c++  java
  • 代码_日期的验证

    【需求描述】: 在手机的系统设置中,系统日期的有效范围为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 "
    -------------无效值的测试----------"
    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])

    【运行结果】:

  • 相关阅读:
    10.RobotFramework: 获取当前时间戳
    9.接口自动化-自定义关键字、接口设计规范
    8.接口自动化-RequestLibrary库的介绍与示例讲解
    7.接口自动化-环境常用库搭建
    6.数据库操作(DatabaseLibrary)与常见问题
    5.远程服务器操作(SSHLibrary)
    概率密度与概率分布函数
    Linux安装包类型
    随机变量与随机过程
    hosts文件
  • 原文地址:https://www.cnblogs.com/zhuhaiying/p/6409243.html
Copyright © 2011-2022 走看看