日期格式验证

以前写了几个日期格式的验证,但是都不太完美。在网上搜了一下,并测试了这个用正则表达式的验证,非常完美其,而且还有瑞年判断。(代码并非本人所写)

1、用正则表达式验证日期格式(C#) 

/// <summary>
        
/// 验证日期格式
        
/// </summary>
        
/// <param name="dtime">日期字符串</param>
        
/// <returns>bool</returns>

         public   static   bool  IsDateTime( string  dtime)
        
{
            
bool flag = true;
            
string strMode = @"^((d{2}(([02468][048])|([13579][26]))[-/s]?
                    ((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|([1-2][0-9])|(3[01])))|
                    (((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|(30)))|
                    (0?2[-/s]?((0?[1-9])|([1-2][0-9])))))|(d{2}(([02468][1235679])|
                    ([13579][01345789]))[-/s]?((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|
                    ([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|
                    (30)))|(0?2[-/s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))
";
            Regex dt 
= new Regex(strMode,RegexOptions.Compiled);
            Match m 
= dt.Match(dtime);

            
if(!m.Success)
            
{
                flag 
= false;
            }

            
return flag;
        }

2、JavaScript 实现的日期格式验证

< script  language = " javascript "  type = " text/javascript " >
 function ChkBirthday(sender, args) 
        

            var check
=/^([1-2]d{3})-(0?[1-9]|11|12|10)-([1-2]?[0-9]|0[1-9]|30|31)$/;
            
if(Form1.Birthday.value!="")
            
if (!check.exec(Form1.Birthday.value)) 
            
{    
              args.IsValid 
= false
            }

            
else
            
{
              var y
=(Form1.Birthday.value).split("-")[0];
              var m
=(Form1.Birthday.value).split("-")[1];
              var d
=(Form1.Birthday.value).split("-")[2];
                
if(m==1||m==3||m==5||m==7||m==8||m==10|m==12)
                
{
                    
if(d<0||d>31)
                    
{
                        args.IsValid 
= false;
                    }

                    
else
                    
{
                        args.IsValid 
= true
                    }

                }

                
else
                
{
                    
if(m==2)     //平月
                    {
                        
if(y%400==0||(y%4==0&&y%100!=0))       //闰年
                        {
                            
if(d<1||d>29)
                            
{args.IsValid = false;}
                            
else
                            
{args.IsValid = true;}
                        }

                        
else       //平年
                        {
                            
if(d<1||d>28)
                            
{args.IsValid = false;}
                            
else
                            
{args.IsValid = true;}
                        }
      
                    }

                    
else          //小月
                    {
                        
if(d<1||d>30)
                        
{args.IsValid = false;}
                        
else
                        
{args.IsValid = true;}
                    }

                }

              }

              }

        
//  --> 
         </ script >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值