Date Validation in Android

后端 未结 6 1716
日久生厌
日久生厌 2020-12-03 09:05

I\'m new to Android programming and I\'m currently developing an app. Can someone help me on how to validate the date that is being input by the user if is it valid or not?<

6条回答
  •  一个人的身影
    2020-12-03 09: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;
      }              
    }
    

    and put these codes on your onClick():

    matcher = Pattern.compile(DATE_PATTERN).matcher(Birthday);
    
    //Birthday validator
        else if (!matcher.matches()) {
        Toast.makeText(getApplicationContext(), "Invalid Birthday!", Toast.LENGTH_SHORt).show();                    
    }
    

提交回复
热议问题