<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ page import="java.text.*"%>
<%@ page import="java.util.*"%>
<%
   Calendar cal = Calendar.getInstance();
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String mDateTime=formatter.format(cal.getTime());  //当前时间
   String charyear=mDateTime.substring(0,4);  //年
   String charmonth=mDateTime.substring(5,7); //月
   String chardate=mDateTime.substring(8,10); //日
   out.println("datestring=" +charyear+ "-" +charmonth+ "-" +chardate);
%>

解决方案 »

  1.   

    有没有正则表达式,使用javascript来完成检查。
      

  2.   

    /^[0-9]{4}(\-)+([0-1]?[1-2]+)/
    这是yyyy-mm
      

  3.   

    刚才验证年-月的正确,验证年-月-日的不对,下面的正确,如假包换验证年-月-日:
    <span id=s2><input type="text" name="a" value="2004-11-11"></span>
    <input type="button" onclick="check(a.value)">
    <script>
    function check(str){
    if (!strDateTime(str))
    alert("error")
    return false;
    }
    function strDateTime(str)
          {
             var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
             if(r==null)return false; 
             var d= new Date(r[1], r[3]-1, r[4]); 
             return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
          }</script>
      

  4.   

    这种用正则表达式的无法判断是否有闰年和闰月的情况,看我的这个function isStandardDate(obj,conjunction)
    {
    if(obj.value.charAt(4)!=conjunction || obj.value.charAt(7)!=conjunction)
    return false;
    var year = obj.value.substring(0,4);
    var month = obj.value.substring(5,7);
    var day = obj.value.substring(8,10);
    var condition1 = isNaN(year) || isNaN(month) || isNaN(day);
    var condition2 = parseInt(year,10)!=parseFloat(year) || parseInt(month,10)!=parseFloat(month) || parseInt(day,10)!=parseFloat(day)
    if(condition1 || condition2)
    return false;
    var d = new Date();
    d.setFullYear(parseInt(year,10));
    d.setMonth(parseInt(month,10)-1);
    d.setDate(parseInt(day,10));
    year = d.getFullYear();
    month = d.getMonth()+1;
    day = d.getDate();
    var temp = year+conjunction;
    if(month<10)
    temp+="0";
    temp+=month+conjunction;
    if(day<10)
    temp+="0";
    temp+=day;
    if(obj.value==temp)
    return true;
    else
    return false;
    }
      

  5.   

    呵呵,没有办法,javascript的年是从1900年开始的