想写一个验证方法,自己做了个一个 ,结果越想越乱,看看大家有什么好方法没有 。
可以自定义日期格式,比如yyyy-mm-dd或者yyyy年mm月dd日,方法有两个参数,一个是输入的数值,一个是自定义的格式。

解决方案 »

  1.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    /*日期验证*/
    function showBirty() {
    //获得日期的值
    var birty = document.inputForm.birty.value;
    var advBirty = document.getElementById("advBirty");
    advBirty.innerHTML = "";
    //日期不能为空
    if ("" == birty) {
    advBirty.innerHTML = "<font size='2' color='red'>日期不能为空</font>";
    return false;
    }
    //日期的格式必须为yyyy-mm-dd
    if (birty.substring(4,5) != "-" || birty.substring(7,8) != "-") {
    advBirty.innerHTML = "<font size='2' color='red'>日期的格式必须为yyyy/mm/dd</font>";
    return false;
    }
    //日期的长度必须为10位
    if (birty.length != 10) {
    advBirty.innerHTML = "<font size='2' color='red'>日期的长度必须为10位</font>";
    return false;
    }
    //日期以/符合分割
    var splitBirty = birty.split("-");
    if (isNaN(splitBirty[0]) || isNaN(splitBirty[1]) ||
    isNaN(splitBirty[2])) {
    advBirty.innerHTML = "<font size='2' color='red'>日期必须都为数字</font>";
    return false;
    }
    //取得当前年
    var today = new Date();
    var year = today.getYear();
    //年必须在1949至当前年之间
    if (splitBirty[0] < 1949 || splitBirty[0] > year) {
    advBirty.innerHTML = "<font size='2' color='red'>年必须在1949至" +year+ "年之间</font>";
    return false;
    } //月必须在1-12之间
    if (splitBirty[1] < 1 || splitBirty[1] > 12) {
    advBirty.innerHTML = "<font size='2' color='red'>月必须在1-12之间</font>";
    return false;
    } //如果月是1、3、5、7、8、10、12,那么日必须在1-31天之间
    if ((splitBirty[1] == 1 || splitBirty[1] == 3 ||
    splitBirty[1] == 5 || splitBirty[1] == 7 ||
    splitBirty[1] == 8 || splitBirty[1] ==10 ||
    splitBirty[1] == 12) && (splitBirty[2] < 1 || splitBirty[2] > 31)) {
    advBirty.innerHTML = "<font size='2' color='red'>日必须在1-31天之间</font>";
    return false;
    } //如果月是4、6、9、11,那么日必须在1-30天之间
    if ((splitBirty[1] == 4 || splitBirty[1] == 6 ||
    splitBirty[1] == 9 || splitBirty[1] == 11 ) && 
    (splitBirty[2] < 1 || splitBirty[2] > 30)) {
    advBirty.innerHTML = "<font size='2' color='red'>日必须在1-30天之间</font>";
    return false;
    }
    //如果是闰年,那么二月份在1-29天之间
    if (((splitBirty[0] % 4 == 0 && splitBirty[0] % 100 != 0) ||
    splitBirty[0] % 400 == 0) && splitBirty[1] == 2 &&
    (splitBirty[2] < 1 || splitBirty[2] > 29)) {
    advBirty.innerHTML = "<font size='2' color='red'>日必须在1-29天之间</font>";
    return false;
    } //如果是平年,那么二月份在1-28天之间
    if (!((splitBirty[0] % 4 == 0 && splitBirty[0] % 100 != 0) ||
    splitBirty[0] % 400 == 0) && splitBirty[1] == 2 &&
    (splitBirty[2] < 1 || splitBirty[2] > 29)) {
    advBirty.innerHTML = "<font size='2' color='red'>日必须在1-28天之间</font>";
    return false;
    }
    return true;
    }
    //-->
    </SCRIPT>
    </HEAD><BODY>
    <form action="Noname2.html"  method="post" name="inputForm" onSubmit="return showBirty()">
    日期:<input type="text" name="birty" onBlur="showBirty()"><div id="advBirty" style="display:inline;"></div><br>
    <input type="submit" value="提交">
    </form>
    </BODY>
    </HTML>
      

  2.   

    咱是新手,不会正则表达式,也不会js封装!~~
    如果是web你可以参考,
    如果是vs桌面,在vs控件中有个日期控件dateTimePicker,不需要判断!
      

  3.   


    DateTime x = new DateTime();
    DateTime y = new DateTime();
    x = DateTime.Now;//当前时间
    y = x;x = Convert.ToDateTime((DateTime.Now.ToString("yyyy-MM-01")).AddMOnths(-1).ToShortDateString());//上月1号0:00:00秒//上月最后一天的最后一刻
    y = Convert.ToDateTime((DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString());
    y = Convert.ToDateTime(y.ToString("yyyy-MM-d")+ " 23:59:59");
    //此时,你可以查询上月的数据了:
    select * from dt where rq>=x and rq<=y...
    如果是dateTimePicker转换成yyyy-mm-dd格式
      

  4.   

    正则验证日期
    http://topic.csdn.net/u/20090720/08/deed1769-263e-4b47-8275-9e0931d124c4.html
      

  5.   

    正则@"^\d{4}/-\d{2}/-\d{2}$"可以再详细点,不过一般的验证没必要  
      

  6.   


    写错了,不好意思   @"^\d{4}\-\d{2}\-\d{2}$"
      

  7.   

    public static bool IsDate(string value, out DateTime dateValue)
            {
                try
                {
                    dateValue= DateTime.ParseExact(value,"yyyy-M-d",null);
                    return true;
                }
                catch
                {
                    try
                    {
                        dateValue = DateTime.ParseExact(value, "yyyyMMdd", null);
                        return true;
                    }
                    catch
                    {
                        try
                        {
                            dateValue = DateTime.ParseExact(value, "yyyy年M月d日", null);
                            return true;
                        }
                        catch
                        {
                            dateValue = DateTime.MinValue;
                            return false;
                        }
                    }
                }
            }调用方法: DateTime  d;
    if (MyValidate.IsDate("20080808",out d))
        MessageBox.Show(d.ToShortDateString());