How do I format a date?

This example shows you how to format a date.
package net.javaiq.examples.date;

import java.sql.Date;

import java.text.SimpleDateFormat;


/**
 * This class demonstrates on how to format a date 
 * @author JavaIQ.net
 * Creation Date Dec 3, 2010
 */
public class DateFormatter {
    private static char separator = '/';
    private static String[] validDateFormats = 
        new String[] { "DDMMYYYY", "MMDDYYYY", "YYYYMMDD", "YYYYDDMM", "MMYYYY", "YYYYMM", "MMMYYYY", "DD", 
                       "MMDDYY", "DDMMYY", "YYMMDD" };


    /**
     * Returns the string representation in the corresponding format.
     * Valid date formats valid are DDMMYYYY, MMDDYYYY, YYYYMMDD, YYYYDDMM, MMYYYY, YYYYMM, MMMYYYY, DD, 
     * MMDDYY, YYMMDD, DDMMYY     
     * @param date
     * @param format
     * @param dateSeparator
     * @return
     */
    public static String format(Date date, String format, char dateSeparator) {
        String formattedDate = null;
        if (date != null) {
            String allowed = " -./";
            String dateSeparatorString = String.valueOf(separator);

            if (allowed.indexOf(dateSeparator) >= 0) {
                dateSeparatorString = String.valueOf(dateSeparator);
            } else if (dateSeparator == '\u0000') {
                dateSeparatorString = "";
            }

            if (format.trim().equalsIgnoreCase("DDMMYYYY")) {
                formattedDate = formatDate(date, "dd" + dateSeparatorString + "MM" + dateSeparatorString + "yyyy");
            } else if (format.trim().equalsIgnoreCase("MMDDYYYY")) {
                formattedDate = formatDate(date, "MM" + dateSeparatorString + "dd" + dateSeparatorString + "yyyy");
            } else if (format.trim().equalsIgnoreCase("YYYYDDMM")) {
                formattedDate = formatDate(date, "yyyy" + dateSeparatorString + "dd" + dateSeparatorString + "MM");
            } else if (format.trim().equalsIgnoreCase("YYYYMMDD")) {
                formattedDate = formatDate(date, "yyyy" + dateSeparatorString + "MM" + dateSeparatorString + "dd");
            } else if (format.trim().equalsIgnoreCase("MMYYYY")) {
                formattedDate = formatDate(date, "MM" + dateSeparatorString + "yyyy");
            } else if (format.trim().equalsIgnoreCase("YYYYMM")) {
                formattedDate = formatDate(date, "yyyy" + dateSeparatorString + "MM");
            } else if (format.trim().equalsIgnoreCase("DD")) {
                formattedDate = formatDate(date, "dd");
            } else if (format.trim().equalsIgnoreCase("MMMYYYY")) {
                formattedDate = formatDate(date, "MMM" + dateSeparatorString + "yyyy");
            } else if (format.trim().equalsIgnoreCase("DDMMYY")) {
                formattedDate = formatDate(date, "dd" + dateSeparatorString + "MM" + dateSeparatorString + "yy");
            } else if (format.trim().equalsIgnoreCase("MMDDYY")) {
                formattedDate = formatDate(date, "MM" + dateSeparatorString + "dd" + dateSeparatorString + "yy");
            } else if (format.trim().equalsIgnoreCase("YYMMDD")) {
                formattedDate = formatDate(date, "yy" + dateSeparatorString + "MM" + dateSeparatorString + "dd");
            }
        }

        return formattedDate;
    }

    /**
     * Formats the given date in the specified format
     * @param date
     * @param format
     * @return formattedDate
     */
    public static String format(Date date, String format) {
        return format(date, format, separator);
    }


    /**
     * Formats the given date in the specified format without the separator
     * @param date
     * @param format
     * @return formattedDate
     */
    public static String format(Date date, String format, boolean separatorRequired) {
        if (separatorRequired) {
            return format(date, format);
        } else {
            return format(date, format, '\u0000');
        }
    }

    /**
     * Formats the given date in the specified format
     * @param date
     * @param format
     * @return formattedDate
     */
    private static String formatDate(java.util.Date date, String format) {
        SimpleDateFormat df = new SimpleDateFormat(format);
        return df.format(date) + "";
    }

    /**
     * Fetches the valid date formats
     * @return validDateFormats
     */
    public static String[] getAvailableDateFormats() {
        return validDateFormats;
    }

    /**
     * Tests date formatting methods with sample inputs
     * @param args
     */
    public static void main(String[] args) {
        final java.sql.Date inputDate = new java.sql.Date(System.currentTimeMillis());
        System.out.println("Input Date : " + inputDate);
        String formattedDate = format(inputDate, "DDMMYYYY");
        System.out.println("Formatted date : " + formattedDate);

        formattedDate = format(inputDate, "DDMMYYYY", false);
        System.out.println("Formatted date with no separator : " + formattedDate);
    }
}