@Override
	public DateTime convertControlValueToControlComparable(Object aValue)
	{
		if ( aValue instanceof DateTime )
		{
			return (DateTime) aValue;
		}
		else if ( aValue instanceof XMLGregorianCalendar )
		{
			return convertXMLGregorianCalendarToDateTime( (XMLGregorianCalendar) aValue, getTimezone() );
		}
		else if ( aValue instanceof String )
		{
			String str = (String) aValue;
			String format = getFormatString();
			DateTimeFormatter fmt = DateTimeFormat.forPattern( format );

			try
			{  
				if ( ( getParameterTypeConverter() == null ) ||
					  ( getParameterTypeConverter().getParameter() == null ) || 
					  ( getParameterTypeConverter().getParameter() instanceof UTCTimeOnlyT ) || 
					  ( getParameterTypeConverter().getParameter() instanceof UTCTimestampT ) )
				{
					DateTime tempDateTime = fmt.parseDateTime( str ); 
					return tempDateTime.withZone( DateTimeZone.UTC );
				}

				/*
				 * else if (getParameter() instanceof TZTimestamp || getParameter() instanceof
				 * TZTimeOnlyT) { return fmt.withOffsetParsed().parseDateTime(str);
				 * }
				 */
				else
				{
					return fmt.parseDateTime( str );
				}
			}
			catch (IllegalArgumentException e)
			{
				throw new IllegalArgumentException( "Unable to parse \"" + str + "\" with format \"" + format + "\"  Exception: " + e.getMessage() );
			}
		}
		else
		{
			return null;
		}
	}