Java Generic Date Formatter

Below Generic Date utility helps to get formatted date based on passed date pattern. Any format date can be used to get formatted date.


//////////////////////////Code Snippet /////////////////


import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;


public class Test {

 public static void main(String[] args) {

  String pattern = "MM-dd-yyyy hh:mm aa";
  String dateStr = "2014-07-09T10:12:41Z";

  String displayDate = getFormatedDisplayDate(dateStr, pattern);
  System.out.println("displayDate = " + displayDate);

 }


 /**
  * Dates formats for conversion.
  *
  */
 private static final SimpleDateFormat[] DATE_FORMATS = {
     new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"), //ISO8601 long RFC822 zone
     new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz"), //ISO8601 long long form zone
     new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"), //ignore timezone
     new SimpleDateFormat("yyyyMMddHHmmssZ"), //ISO8601 short
     new SimpleDateFormat("yyyyMMddHHmm"),
     new SimpleDateFormat("yyyyMMdd"),
     new SimpleDateFormat("yyyyMM"),
     new SimpleDateFormat("yyyy")
 };


 /**
  * Returns formated date string for display.
  * @param dateStr
  * @return Date String
  */
 public static String getFormatedDisplayDate(String dateStr, String datePattern){
  System.out.println("dateStr =" + dateStr + ", datePattern =" + datePattern);

  String formattedDate = null;

  if(dateStr != null && dateStr.equals("") && datePattern != null && datePattern.equals("")){
   System.out.println("Invalid dateStr or date pattern. Can not get Formatted date.");
   return formattedDate;
  }

  Date convertedDate  = null;

  for (SimpleDateFormat sdf : DATE_FORMATS) {
         try {
             sdf.setLenient(false);
             convertedDate  = sdf.parse(dateStr);
             System.out.println("Date: " + dateStr + " matched on pattern:" + sdf.toPattern());
             break;
         } catch (Exception e) {
             //do nothing:
          //continue;
         }
     }

  if(convertedDate!= null){
 
   Calendar cal = new GregorianCalendar();
         cal.setTime(convertedDate);
     
         SimpleDateFormat sdf = null;
   try {
    sdf = new SimpleDateFormat(datePattern);
   } catch (Exception e) {
    System.out.println("ERROR occured while reading date pattern. Invalid date pattern passed. " + e.getMessage());
   }
     
   if(sdf != null){
    formattedDate =  sdf.format(cal.getTime());
   }
 
  }else{
   System.out.println("Invalid date or no such date formate found. Data cound not be formated.");
  }
  System.out.println("formattedDate =" + formattedDate);
  return formattedDate;
 }


}


///////////////Output: //////////////////////
dateStr =2014-07-09T10:12:41Z, datePattern =MM-dd-yyyy hh:mm aa
Date: 2014-07-09T10:12:41Z matched on pattern:yyyy-MM-dd'T'HH:mm:ss
formattedDate =07-09-2014 10:12 AM
displayDate = 07-09-2014 10:12 AM



Comments

Popular posts from this blog

How to convert and format DATE from different TIME ZONEs