code: public static Date string2Date (String pvDateString) {
  		if (pvDateString == null) { 
  			throw new IllegalArgumentException(pvDateString); 
  		}
  		
  		// 1. pass: pvDateString is a long as milliseconds after Jan 1st 1970
  		try {
  			return new Date(Long.parseLong(pvDateString));
  		} catch (Exception e) {
  			if (NonCriticalExceptionHandler.isNonCriticalExceptionHandlerEnabled()) {
  				NonCriticalExceptionHandler.handleException(Util.class, e, "1st pass string2Date: " + pvDateString);
  			}
  		}
  		
  		// 2. pass: Timestamp format. The Timestamp format with two digits og fractional seconds are not parsed correctly by SimpleDateFormat,
  		//          hence we have to use Timestamp.valueOf, which handles this correctly
  			try {
  		  return Timestamp.valueOf(pvDateString);
      } catch (Exception e) {
        if (NonCriticalExceptionHandler.isNonCriticalExceptionHandlerEnabled()) {
          NonCriticalExceptionHandler.handleException(Util.class, e, "2nd pass string2Date: " + pvDateString);
        }
      }
  		
  		// 3. pass, iterate through all registered DateFormats
  		Collection<DateFormat> dfList = getDateFormats();
  		for (DateFormat df : dfList) {
  			try {
  				return df.parse(pvDateString); 
  			} catch (ParseException e) {
  				if (NonCriticalExceptionHandler.isNonCriticalExceptionHandlerEnabled()) {
  					NonCriticalExceptionHandler.handleException(Util.class, e, "3nd pass string2Date: " + pvDateString);
  				}
  			}
  		}
  		
  		throw new IllegalArgumentException (pvDateString); 
  	}
docs: Convert a Date-String to a Date. The Converter <b>ignored the Millisecond</b>.
  Example: Thu Aug 11 19:30:57 CEST 2005
  
  @param pvDateString The Date-String (unequal null).
  @return Valid <code>java.util.Date</code>.