2 momo1199 Momo1199 于 2013.07.02 13:26 提问

验证Android用户输入日期

如何验证用户输入的日期是有效还是无效?

private Pattern pattern;
private Matcher matcher;
private static final String DATE_PATTERN = 
       "(0?[1-9]|1[012]) [/.-] (0?[1-9]|[12][0-9]|3[01]) [/.-] ((19|20)\\d\\d)";
/**
* Validate date format with regular expression
* @param date date address for validation
* @return true valid date format, false invalid date format
*/
public boolean validate(final String date){
  matcher = pattern.matcher(date);
  if(matcher.matches()){
      matcher.reset();

      if(matcher.find()){
          String day = matcher.group(1);
          String month = matcher.group(2);
          int year = Integer.parseInt(matcher.group(3));

          if (day.equals("31") && 
           (month.equals("4") || month .equals("6") || month.equals("9") ||
                   month.equals("11") || month.equals("04") || month .equals("06") ||
                   month.equals("09"))) {
             return false; // only 1,3,5,7,8,10,12 has 31 days
          }             
      }
      else{
           return false;
      }        
  }
  else{
      return false;
  }              
}

1个回答

loFataMer
loFataMer   2013.07.02 16:41
private Pattern pattern;
private Matcher matcher;

private static final String DATE_PATTERN = 
       "(0?[1-9]|1[012]) [/.-] (0?[1-9]|[12][0-9]|3[01]) [/.-] ((19|20)\\d\\d)";


  /**
   * Validate date format with regular expression
   * @param date date address for validation
   * @return true valid date format, false invalid date format
   */
public boolean validate(final String date){

  matcher = pattern.matcher(date);

  if(matcher.matches()){
      matcher.reset();

      if(matcher.find()){
          String day = matcher.group(1);
          String month = matcher.group(2);
          int year = Integer.parseInt(matcher.group(3));

          if (day.equals("31") && 
            (month.equals("4") || month .equals("6") || month.equals("9") ||
                   month.equals("11") || month.equals("04") || month .equals("06") ||
                   month.equals("09"))) {
             return false; // only 1,3,5,7,8,10,12 has 31 days
          } 

          else if (month.equals("2") || month.equals("02")) {
               //leap year
               if(year % 4==0){
                   if(day.equals("30") || day.equals("31")){
                       return false;
                   }
                   else{
                       return true;
                   }
              }
              else{
                  if(day.equals("29")||day.equals("30")||day.equals("31")){
                      return false;
                  }
                  else{
                      return true;
                  }
              }
          }

          else{               
              return true;                
          }
      }

      else{
           return false;
      }        
  }
  else{
      return false;
  }              
}

再将下面的代码放到onClick()中:

matcher = Pattern.compile(DATE_PATTERN).matcher(Birthday);

//Birthday validator
    else if (!matcher.matches()) {
    Toast.makeText(getApplicationContext(), "Invalid Birthday!", Toast.LENGTH_SHORt).show();                    
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
PHP中进行日期用户输入生日有效性验证
知识点1:checkdate($month , $day , $year) 如果$month 在1到12之间,$year在1到32767之间,$day在1到$month和$year所对应的最大天数之间,函数checkdate()会返回true. 知识点2:DateTime类的createFromFormat()方发 该方法非常灵活,告诉他一个格式化的日期字符串结构格式,它就能适当地分解出各个
javascript判断用户输入是否合法日期格式
function isDate(p_Expression){ var re = //d{4}-/d{1,2}-/d{1,2}/g; var val = new Boolean( re.test(p_Expression) ) return val;} 
正则表达式_Java_SE_C++_简单题_判断输入的日期是否是正确的
博主利用正则表达式加上逻辑判断写了一个判断输入的日期是否是正确的小程序, 程序逻辑比较复杂,博主写了好久。。。 import java.util.Arrays; import java.util.Scanner; public class Stringmatch { public static void main(String[] args) { Scanner s = ne
Asp.net中CompareValidator控件中的验证日期问题
众所周知,asp.net封装了很多验证控件,这些控件可以在客户端很方便地进行一些验证,无需发送到
JQueryEasyUI 表单验证之日期验证输入框
1,介绍 定义:日期验证输入框结合了一个可编辑的文本框控件和允许用户选择日期的下拉日历面板控件 选择的日期会自动转变为一个有效日期 2,属性 属性名 属性值类型 描述 editable boolean 定义用户是否可以直接输入文本到字段中 required boolean 定义输入框是否为必填 missingMe
验证输入日期.rar
验证输入日期.rar验证输入日期.rar验证输入日期.rar
JSP 在脚本语言中验证输入日期的格式.
 今天在我做的高级搜索页面中添加了一个检验输入日期格式的脚本编码,主要验证客户端输入的日期形式是否为(YYYY-MM-DD)以及验证输入的日期是否合法.function  chkdate()  {             var  datestr;             datestr=form1.t1.value;             var  lthdatestr;         
JAVA 判断输入日期是否合法,求某日期n天后的日期,两日期之间相距的天数
JAVA 判断输入日期是否合法,求某日期n天后的日期,两日期之间相距的天数
Android之输入用户名和密码验证
今天做的就是在界面输入用户名和密码,如果正确的话显示登陆成功,否则就是失败了! 界面很挫,就是很挫! 输入用户名:Android 密码:2014 结果如下: 接着重置,返回原来图片! 如果密码错误呢? 点重置返回原来界面! 接着长按图标按钮,就出现动态textview! 具体代码如下: <LinearLayout xmlns:android="http://sc
asp.net中如何验证日期格式是否正确
1. js方法: 需要调用日期验证的正则表达式: 日期的正则表达式,YYYY-MM-DD YYYY/MM/DD YYYY.MM.DD "^(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?