根据指定的格式验证日期时间

原创 2004年07月12日 12:49:00

<script language="javascript">
//参数dt:日期时间字符串
//参数msg:控件描述
//参数fm:日期时间格式
//参数type:语种类型,如空:公元,1:min
function checkDateByMask(dt,msg,fm,type){

//1.定义特殊的格式
var N=10;
var format=new Array(N);
format[0]="yyyy/MM/dd";
format[1]="yyyy-MM-dd";
format[2]="yy/MM/dd";
format[3]="yy-MM-dd";

format[4]="yyyy/MM/dd hh:mm:ss";
format[5]="yyyy-MM-dd hh:mm:ss";
format[6]="yy/MM/dd hh:mm:ss";
format[7]="yy-MM-dd hh:mm:ss";

format[8]="hh:mm:ss";
format[9]="hh:mm";

//2.定义错误提示
msg="/'"+msg+"/'";
var errPar=msg+"参数有误";
var errFormat=msg+"请按如下格式输入:/n"+fm;
var errYear=msg+"年份不对";
var errMonth=msg+"月份不对";
var errDay=msg+"日期不对";
var errHour=msg+"小时不对";
var errMinute=msg+"分钟不对";
var errSecond=msg+"秒钟不对";

  
//3.判断参数是否正确
var b=false;
for(var i=0;i<N;i++){
     if(format[i].toLowerCase()==fm.toLowerCase()){
            b=true;break;
     }
}
if(!b){
     return getErrorMsg(errPar);
}

//4.补足位数
if(dt.length!=fm.length){
     var dt4=dt.replace(/[^0-9]/g,",")
     var dtarr=dt4.split(",");
     var dt3="";
     var dtlen=0;
     for(var i=0;i<dtarr.length;i++){
         var len=dtarr[i].length;
         dtlen=dtlen+len+1;
         if(len<1)
                dt3=dt3+"00"+dtarr[i];
         else if(len<2)
                dt3=dt3+"0"+dtarr[i];
         else
                dt3=dt3+dtarr[i];
               
         dt3=dt3+dt.substr(dtlen-1,1);
         }
     dt=dt3;
}
//5.判断时间字符串与格式参数是否相符
if(dt.length!=fm.length){        
     return getErrorMsg(errFormat);
}
else{
     var dt1=dt.replace(/[0-9]/g,"%d");
     var dt2=fm.replace(/[ymdhs]/gi,"%d");
     //alert(dt1+"/n"+dt2);
     if(dt1!=dt2){
           return getErrorMsg(errFormat);
     }
}    
        
//5.判断日期时间是否正确
try{
     fm=fm.replace(/Y/g,"y").replace(/D/g,"d");
     var iyyyy=fm.indexOf("yyyy");
     var iyy=fm.indexOf("yy");
     var imm=fm.indexOf("MM");
     var idd=fm.indexOf("dd");
     var ihh=fm.indexOf("hh");
     var imi=fm.indexOf("mm");
     var iss=fm.indexOf("ss");
   
     var newdt=new Date();
    
     var year="";
     //Year   
     try{
         var isyear=false;
         if(iyyyy>-1){               
            year=dt.substr(iyyyy,4);
            isyear=true;
         }
         else if(iyy>-1){
            year=dt.substr(iyy,2);
            isyear=true;
         }
         if(isyear){
            if(type=="1"){//
               year=parseInt(year)+1911;
            }
            newdt.setFullYear(year);
         }  
     }
     catch(e1){
         return getErrorMsg(errYear+e1.toString());
     }
    
     //Month
     try{    
         if(imm>-1){
             if(dt.substr(imm,2)>"12"||dt.substr(imm,2)<"01"){
                 return getErrorMsg(errMonth);
             }
             newdt.setMonth(dt.substr(imm,2)-1);
         }
     }
     catch(e1){
         return getErrorMsg(errMonth+e1.toString());
     }
    
     //Day
     try{    
         if(idd>-1){
             if(dt.substr(idd,2)>"31"||dt.substr(idd,2)<"01"){
                 return getErrorMsg(errDay);
             }
             newdt.setDate(dt.substr(idd,2)); 
         }
     }
     catch(e1){
         return getErrorMsg(errDay);
     }
    
     //Hour
     try{
         if(ihh>-1){
             if(dt.substr(ihh,2)>"23"){
                 return getErrorMsg(errHour);
             }
             newdt.setHours(dt.substr(ihh,2));
         }
     }
     catch(e1){
         return getErrorMsg(errHour);
     }
    
     //Minute
     try{
         if(imi>-1){
             if(dt.substr(imi,2)>"59"){
                 return getErrorMsg(errMinute);
             }
             newdt.setMinutes(dt.substr(imi,2));
         }
     }
     catch(e1){
         return getErrorMsg(errMinute);
     }
    
     //Second
     try{
         if(iss>-1){
             if(dt.substr(iss,2)>"59"){
                 return getErrorMsg(errSecond);
             }
             newdt.setSeconds(dt.substr(iss,2));
         }        
     }
     catch(e1){
         return getErrorMsg(errSecond);
     }
         
     //Year
     if(iyyyy>-1){
          if(newdt.getFullYear()!=year){
                 return getErrorMsg(errYear);
          }
     }
     else if(iyy>-1){
          if(newdt.getFullYear()!=year){
                 return getErrorMsg(errYear);
          }
     }
    
     //Month
     if(imm>-1){
          if(newdt.getMonth()!=(dt.substr(imm,2)-1)){
                 return getErrorMsg(errDay);
          }
     }
    
     //Day      
     if(idd>-1){
          if(newdt.getDate()!=dt.substr(idd,2)){
                 return getErrorMsg(errDay);
          }
     }   
           

     //Hour
     if(ihh>-1){
          if(newdt.getHours()!=dt.substr(ihh,2)){
                 return getErrorMsg(errMinute);
          }
     }
    
     //Minute
     if(imi>-1){
          if(newdt.getMinutes()!=dt.substr(imi,2)){
                 return getErrorMsg(errSecond);
          }
     }
    
     //Second
     if(iss>-1){         
          if(newdt.getSeconds()!=dt.substr(iss,2)){
                 return getErrorMsg(errSecond);
          }
     }
     alert(newdt);

catch(e){
     return getErrorMsg(e.toString());
}

           
}

function getErrorMsg(msg){
     alert(msg);
     return false;
     }

function  isGyDate(obj,msg){
     if(!checkDateByMask(obj.value,msg,"yyyy/MM/dd",""))
         obj.focus();    
     }
function  isMgDate(obj,msg){
     if(!checkDateByMask(obj.value,msg,"yy/MM/dd","1"))
         obj.focus();    
     }
    
function  isGyDateTime(obj,msg){
     if(!checkDateByMask(obj.value,msg,"yyyy/MM/dd hh:mm:ss",""))
         obj.focus();    
     }
function  isMgDateTime(obj,msg){
     if(!checkDateByMask(obj.value,msg,"yy/MM/dd hh:mm:ss","1"))
         obj.focus();    
     }  
      
function  isTime(obj,msg){
     if(!checkDateByMask(obj.value,msg,"hh:mm:ss",""))
         obj.focus();    
     }
    
function checkDate(){
    return checkDateByMask(document.all.aa.value,"aa",document.all.formatStr.value,"");
}
</script>


<form name="form1">
<select name="formatStr">
<option value="yyyy/MM/dd">yyyy/MM/dd</option>
<option value="yyyy-MM-dd">yyyy-MM-dd</option>
<option value="yy/MM/dd">yy/MM/dd</option>
<option value="yy-MM-dd">yy-MM-dd</option>

<option value="yyyy/MM/dd hh:mm:ss">yyyy/MM/dd hh:mm:ss</option>
<option value="yyyy-MM-dd hh:mm:ss">yyyy-MM-dd hh:mm:ss</option>
<option value="yy/MM/dd hh:mm:ss">yy/MM/dd hh:mm:ss</option>
<option value="yy-MM-dd hh:mm:ss">yy-MM-dd hh:mm:ss</option>

<option value="hh:mm:ss">hh:mm:ss</option>
<option value="hh:mm">hh:mm</option>
</select>
<input type="text" name="aa" size="20"><br>

<input type="button" name="log1" value="Submit" onclick="checkDate()">

</form>

JS中通过字符串构造指定的日期对象

最近遇到这样一个需求:首先要从数据库中查出一个字段,这个字段是日期型的,然后在js中对这个日期进行判断,看它是否小于当前时间两个小时。关键的问题就是如何将数据库中的时间变成在js中的时间。我是这样处理...
  • CMTobby
  • CMTobby
  • 2007年08月17日 15:42
  • 2779

js生成指定格式的时间(yyyymmddHHmiss)

//生成指定格式的时间(yyyymmddHHmiss) function getDate(){ var date = new Date(); var month = date.getMonth(...
  • u014136910
  • u014136910
  • 2016年04月25日 22:49
  • 491

导出excel解决“您尝试打开的文件格式与文件扩展名指定的格式不一致,打开文件前请验证文件没有损坏且来源可信”

1、打开注册表编辑器 方法:开始 -> 运行 -> 输入regedit -> 确定 2、找到注册表子项 HKEY_CURRENT_USER\Software\Microsoft\Office\1...
  • zhengyanan521
  • zhengyanan521
  • 2012年02月24日 14:51
  • 2801

修复打开Excel提示,“您尝试打开的文件的格式与文件扩展名指定的格式不一致,打开前请验证文件示被损坏且来源可信,是否立即打开该文件?”

在注册表中增加一下键值即可。 在“开始菜单/运行”中输入regedit,打开注册表。 选择 HKEY_CURRENT_USER / Software / Microsoft / Of...
  • wozengcong
  • wozengcong
  • 2013年09月11日 09:31
  • 2109

JS对日期按照指定格式进行格式化

Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1, //月份 "d+" :...
  • u012104497
  • u012104497
  • 2015年07月09日 10:37
  • 853

js获取指定格式的时间

Date.prototype.format = function (fmt) { //author: meizz "use strict"; var o = { "M+":...
  • wzp6010625
  • wzp6010625
  • 2016年12月16日 17:37
  • 719

根据指定格式获取当前日期

package icers.time; import java.text.SimpleDateFormat; import java.util.Date; /** * 根据指定格式获取当前日期 ...
  • u010801743
  • u010801743
  • 2013年12月05日 12:07
  • 418

日期工具类,根据日期格式自动选择格式类型

日期工具类,经常会用到把String转成Date或long类型的方法,一般需要指定格式类型(pattern,比如"yyyy-MM-dd HH:mm:ss")。 这种方法有个缺点就是需要指定一个patt...
  • ClementAD
  • ClementAD
  • 2016年05月05日 19:33
  • 1146

创建oracle验证日期格式方法

create or replace function is_date(in_date in varchar2) return integer is   Result date; begin   ...
  • towardsfuture
  • towardsfuture
  • 2014年11月24日 15:02
  • 1465

EXCEL文件显示:您尝试打开的文件的格式与文件扩展名指定的格式不一致,打开前请验证文件示被损坏且来源可

打开文件时提示“您尝试打开的文件xxx.xls的格式与文件扩展名指定的格式不一致。打开文件前请验证文件没有损坏且来源可信。是否立即打开该文件?”,卸载Office 2007后重装也不行。 这是什么原...
  • kyfvc
  • kyfvc
  • 2014年11月19日 16:09
  • 18593
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:根据指定的格式验证日期时间
举报原因:
原因补充:

(最多只允许输入30个字)