/*
-------------------------------------------------------------------------------
文件名称:date.js
说    明:JavaScript脚本,处理一些和日期有关的动作
版    本:1.0
修改纪录:
---------------------------------------------------------------------------
时间        修改人      说明
2005-4-20   zhouming        创建
-------------------------------------------------------------------------------     
*/
/*
用途:把日期从一种格式转换为另一种格式
输入:date:日期;fmt1:原来的格式;fmt2 转换成的格式
返回:fmt2格式的日期
格式:年:yyyy   月:MM  日:dd
            时:HH   分:mm  秒:ss
*/
function dateFormat( date, fmt1,fmt2) { 
    if (isFormatDate( date, fmt1)) {
       if (fmt2.indexOf("yyyy")!=-1&&fmt2.indexOf("MM")!=-1&&fmt2.indexOf("dd")!=-1){
        //设置日期
              var retDate = setDate( date, fmt1,fmt2);
     if (fmt2.indexOf("HH")!=-1&&fmt2.indexOf("mm")!=-1&&fmt2.indexOf("ss")!=-1){
        //设置时间
     retDate = setTime(date, fmt1,retDate);
       }
     return retDate;
    }
    else {
         alert("日期格式错误");
    }
    }
    else {
        alert("日期格式错误");
    }
    return "";
} 
 
/*
用途:判断是否是日期
输入:date:日期;fmt:日期格式
返回:如果通过验证返回true,否则返回false
*/
function isFormatDate( date, fmt) { 
    var yIndex = fmt.indexOf("yyyy");
    if(yIndex==-1) return false;
   var year = date.substring(yIndex,yIndex+4);
   var mIndex = fmt.indexOf("MM");
    if(mIndex==-1) return false;
   var month = date.substring(mIndex,mIndex+2);
   var dIndex = fmt.indexOf("dd");
    if(dIndex==-1) return false;
   var day = date.substring(dIndex,dIndex+2);
    if(!isNumber(year)||year>"2100" || year< "1900") return false;
    if(!isNumber(month)||month>"12" || month< "01") return false;
    if(day>getMaxDay(year,month) || day< "01") return false;
    return true;
} 
//取得某个月的最大天数
function getMaxDay(year,month) {
    if(month==4||month==6||month==9||month==11)
        return "30";
    if(month==2)
        if(year%4==0&&year%100!=0 || year%400==0)
            return "29";
        else
            return "28";
    return "31";
}
function isNumber( str ){  
    var regu = /^(\d+)$/;
        return regu.test(str);
}
function setDate( date, fmt1,fmt2) { 
        var yIndex = fmt1.indexOf("yyyy");
        var year = date.substring(yIndex,yIndex+4);
        var mIndex = fmt1.indexOf("MM");
        var month = date.substring(mIndex,mIndex+2);
        var dIndex = fmt1.indexOf("dd");
        var day = date.substring(dIndex,dIndex+2);
        var retDate = fmt2;
        retDate = retDate.replace(/yyyy/i,year); 
        retDate = retDate.replace(/MM/i,month); 
        retDate = retDate.replace(/dd/i,day); 
        return retDate ;
}
function setTime( date, fmt1,retDate) {
        var hour ="00";
        var min ="00";
        var sec ="00";
        var hIndex = fmt1.indexOf("HH");
        var mIndex = fmt1.indexOf("mm");
        var sIndex = fmt1.indexOf("ss");
        if(sIndex!=-1&&hIndex!=-1&&mIndex!=-1) {
   sec = date.substring(sIndex,sIndex+2);
   min = date.substring(mIndex,mIndex+2);
   hour = date.substring(hIndex,hIndex+2);
   if(!isNumber(hour)||hour>"23" || hour< "00") {alert("日期格式错误"); return ""};
   if(!isNumber(min)||min>"59" || min< "00") {alert("日期格式错误"); return ""};
   if(!isNumber(sec)||sec>"59" || sec< "00") {alert("日期格式错误"); return ""};
  }
  else if (!(sIndex==-1&&hIndex==-1&&mIndex==-1))
  {
            alert("日期格式错误");
   return "";
        }
        retDate = retDate.replace(/HH/i,hour); 
        retDate = retDate.replace(/mm/i,min); 
        retDate = retDate.replace(/ss/i,sec); 
  return retDate;
}