org.apache.commons.beanutils.converters

Class DateTimeConverter

Implemented Interfaces:
Converter
Known Direct Subclasses:
CalendarConverter, DateConverter, SqlDateConverter, SqlTimeConverter, SqlTimestampConverter

public class DateTimeConverter
extends AbstractConverter

Converter implementaion that handles conversion to and from date/time objects.

This implementation handles conversion for the following date/time types.

String Conversions (to and from)

This class provides a number of ways in which date/time conversions to/from Strings can be achieved:
  • Using the SHORT date format for a specified Locale, configure using:
  • Using the specified date pattern(s) for the default Locale, configure using:
  • Using the specified date pattern(s) for a specified Locale, configure using:
  • If none of the above are configured the toDate(String) method is used to convert from String to Date and the Dates's toString() method used to convert from Date to String.
  • The Time Zone to use with the date format can be specified using the setTimeZone() method.

    Version:
    $Revision: 555845 $ $Date: 2007-07-13 03:52:05 +0100 (Fri, 13 Jul 2007) $
    Since:
    1.8.0

    Field Summary

    private String
    displayPatterns
    private Locale
    locale
    private String[]
    patterns
    private TimeZone
    timeZone
    private boolean
    useLocaleFormat

    Fields inherited from class org.apache.commons.beanutils.converters.AbstractConverter

    DEFAULT_CONFIG_MSG, PACKAGE, defaultType, defaultValue, log, useDefault

    Constructor Summary

    DateTimeConverter(Class defaultType)
    Construct a Date/Time Converter that throws a ConversionException if an error occurs.
    DateTimeConverter(Class defaultType, Object defaultValue)
    Construct a Date/Time Converter that returns a default value if an error occurs.

    Method Summary

    protected String
    convertToString(Object value)
    Convert an input Date/Calendar object into a String.
    protected Object
    convertToType(Class targetType, Object value)
    Convert the input object into a Date object of the specified type.
    protected DateFormat
    getFormat(Locale locale, TimeZone timeZone)
    Return a DateFormat for the Locale.
    private DateFormat
    getFormat(String pattern)
    Create a date format for the specified pattern.
    Locale
    getLocale()
    Return the Locale for the Converter (or null if none specified).
    String[]
    getPatterns()
    Return the date format patterns used to convert dates to/from a java.lang.String (or null if none specified).
    TimeZone
    getTimeZone()
    Return the Time Zone to use when converting dates (or null if none specified.
    private void
    logFormat(String action, DateFormat format)
    Log the DateFormat creation.
    private Calendar
    parse(Class sourceType, Class targetType, String value)
    Parse a String date value using the set of patterns.
    private Calendar
    parse(Class sourceType, Class targetType, String value, DateFormat format)
    Parse a String into a Calendar object using the specified DateFormat.
    void
    setLocale(Locale locale)
    Set the Locale for the Converter.
    void
    setPattern(String pattern)
    Set a date format pattern to use to convert dates to/from a java.lang.String.
    void
    setPatterns(String[] patterns)
    Set the date format patterns to use to convert dates to/from a java.lang.String.
    void
    setTimeZone(TimeZone timeZone)
    Set the Time Zone to use when converting dates.
    void
    setUseLocaleFormat(boolean useLocaleFormat)
    Indicate whether conversion should use a format/pattern or not.
    private Object
    toDate(Class type, String value)
    Default String to Date conversion.
    private Object
    toDate(Class type, long value)
    Convert a long value to the specified Date type for this Converter.
    String
    toString()
    Provide a String representation of this date/time converter.

    Methods inherited from class org.apache.commons.beanutils.converters.AbstractConverter

    convert, convertArray, convertToString, convertToType, getDefault, getDefaultType, handleError, handleMissing, isUseDefault, log, primitive, setDefaultValue, toString, toString

    Field Details

    displayPatterns

    private String displayPatterns

    locale

    private Locale locale

    patterns

    private String[] patterns

    timeZone

    private TimeZone timeZone

    useLocaleFormat

    private boolean useLocaleFormat

    Constructor Details

    DateTimeConverter

    public DateTimeConverter(Class defaultType)
    Construct a Date/Time Converter that throws a ConversionException if an error occurs.
    Parameters:
    defaultType - The default type this Converter handles

    DateTimeConverter

    public DateTimeConverter(Class defaultType,
                             Object defaultValue)
    Construct a Date/Time Converter that returns a default value if an error occurs.
    Parameters:
    defaultType - The default type this Converter handles
    defaultValue - The default value to be returned if the value to be converted is missing or an error occurs converting the value.

    Method Details

    convertToString

    protected String convertToString(Object value)
                throws Throwable
    Convert an input Date/Calendar object into a String.

    N.B.If the converter has been configured to with one or more patterns (using setPatterns()), then the first pattern will be used to format the date into a String. Otherwise the default DateFormat for the default locale (and style if configured) will be used.

    Overrides:
    convertToString in interface AbstractConverter
    Parameters:
    value - The input value to be converted
    Returns:
    the converted String value.

    convertToType

    protected Object convertToType(Class targetType,
                                   Object value)
                throws Exception
    Convert the input object into a Date object of the specified type.

    This method handles conversions between the following types:

    • java.util.Date
    • java.util.Calendar
    • java.sql.Date
    • java.sql.Time
    • java.sql.Timestamp
    It also handles conversion from a String to any of the above types.

    For String conversion, if the converter has been configured with one or more patterns (using setPatterns()), then the conversion is attempted with each of the specified patterns. Otherwise the default DateFormat for the default locale (and style if configured) will be used.

    Overrides:
    convertToType in interface AbstractConverter
    Parameters:
    targetType - Data type to which this value should be converted.
    value - The input value to be converted.
    Returns:
    The converted value.

    getFormat

    protected DateFormat getFormat(Locale locale,
                                   TimeZone timeZone)
    Return a DateFormat for the Locale.
    Parameters:
    locale - The Locale to create the Format with (may be null)
    timeZone - The Time Zone create the Format with (may be null)
    Returns:
    A Date Format.

    getFormat

    private DateFormat getFormat(String pattern)
    Create a date format for the specified pattern.
    Parameters:
    pattern - The date pattern
    Returns:
    The DateFormat

    getLocale

    public Locale getLocale()
    Return the Locale for the Converter (or null if none specified).
    Returns:
    The locale to use for conversion

    getPatterns

    public String[] getPatterns()
    Return the date format patterns used to convert dates to/from a java.lang.String (or null if none specified).
    Returns:
    Array of format patterns.
    See Also:
    SimpleDateFormat

    getTimeZone

    public TimeZone getTimeZone()
    Return the Time Zone to use when converting dates (or null if none specified.
    Returns:
    The Time Zone.

    logFormat

    private void logFormat(String action,
                           DateFormat format)
    Log the DateFormat creation.
    Parameters:
    action - The action the format is being used for
    format - The Date format

    parse

    private Calendar parse(Class sourceType,
                           Class targetType,
                           String value)
                throws Exception
    Parse a String date value using the set of patterns.
    Parameters:
    sourceType - The type of the value being converted
    targetType - The type to convert the value to.
    value - The String date value.
    Returns:
    The converted Date object.

    parse

    private Calendar parse(Class sourceType,
                           Class targetType,
                           String value,
                           DateFormat format)
    Parse a String into a Calendar object using the specified DateFormat.
    Parameters:
    sourceType - The type of the value being converted
    targetType - The type to convert the value to
    value - The String date value.
    format - The DateFormat to parse the String value.
    Returns:
    The converted Calendar object.

    setLocale

    public void setLocale(Locale locale)
    Set the Locale for the Converter.
    Parameters:
    locale - The Locale.

    setPattern

    public void setPattern(String pattern)
    Set a date format pattern to use to convert dates to/from a java.lang.String.
    Parameters:
    pattern - The format pattern.
    See Also:
    SimpleDateFormat

    setPatterns

    public void setPatterns(String[] patterns)
    Set the date format patterns to use to convert dates to/from a java.lang.String.
    Parameters:
    patterns - Array of format patterns.
    See Also:
    SimpleDateFormat

    setTimeZone

    public void setTimeZone(TimeZone timeZone)
    Set the Time Zone to use when converting dates.
    Parameters:
    timeZone - The Time Zone.

    setUseLocaleFormat

    public void setUseLocaleFormat(boolean useLocaleFormat)
    Indicate whether conversion should use a format/pattern or not.
    Parameters:
    useLocaleFormat - true if the format for the locale should be used, otherwise false

    toDate

    private Object toDate(Class type,
                          String value)
    Default String to Date conversion.

    This method handles conversion from a String to the following types:

    • java.sql.Date
    • java.sql.Time
    • java.sql.Timestamp

    N.B. No default String conversion mechanism is provided for java.util.Date and java.util.Calendar type.

    Parameters:
    type - The Number type to convert to
    value - The String value to convert.
    Returns:
    The converted Number value.

    toDate

    private Object toDate(Class type,
                          long value)
    Convert a long value to the specified Date type for this Converter.

    This method handles conversion to the following types:

    • java.util.Date
    • java.util.Calendar
    • java.sql.Date
    • java.sql.Time
    • java.sql.Timestamp
    Parameters:
    type - The Date type to convert to
    value - The long value to convert.
    Returns:
    The converted date value.

    toString

    public String toString()
    Provide a String representation of this date/time converter.
    Overrides:
    toString in interface AbstractConverter
    Returns:
    A String representation of this date/time converter

    Copyright (c) 2001-2007 - Apache Software Foundation