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
//////////////////////////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
Post a Comment