How to check whether date is in proper format or not using Java



Problem Description

How to check whether date is in proper format or not?

Solution

Following example demonstrates how to check whether the date is in a proper format or not using matches method of String class.

public class Main {
   public static void main(String[] argv) {
      boolean isDate = false;
      String date1 = "8-05-1988";
      String date2 = "08/04/1987";
      String datePattern = "\\d{1,2}-\\d{1,2}-\\d{4}";
      
      isDate = date1.matches(datePattern);
      System.out.println("Date :"+ date1+": matches with the this date Pattern:"+datePattern+"Ans:"+isDate);
      
      isDate = date2.matches(datePattern);
      System.out.println("Date :"+ date2+": matches with the this date Pattern:"+datePattern+"Ans:"+isDate);
   }
}

Result

The above code sample will produce the following result.

Date :8-05-1988: matches with the this date Pattern: \d{1,2}-\d{1,2}-\d{4}Ans:true
Date :08/04/1987: matches with the this date Pattern: \d{1,2}-\d{1,2}-\d{4}Ans:false

The following is an example to check check whether date is in proper format or not.

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
   public static void main(String args[]) {
      List dates = new ArrayList();
      dates.add("25/12/1990");
      dates.add("25/12/1990");
      dates.add("12/12/90");
      dates.add("05/02/1990");
      String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$";
      Pattern pattern = Pattern.compile(regex);
      
      for(Object date : dates) { 
         Matcher matcher = pattern.matcher((CharSequence) date);
         System.out.println(date +" : "+ matcher.matches());
      }
   }
}

Result

The above code sample will produce the following result.

25/12/1990 : false
25/12/1990 : false
12/12/90 : false
05/02/1990 : true
java_regular_exp.htm
Advertisements