docs: public static Date getAsDate(Object value) {
  		Date result = null;
  
  		try {
  			if (value instanceof String) {
  				String date = ((String) value).toUpperCase();
  				for (Matcher matcher : mapMatcherDateFormat.keySet()) {
  					if (matcher.reset(date).matches()) {
  						SimpleDateFormat sdf = mapMatcherDateFormat.get(matcher);
  						if (sdf != null) {
  							if ( date.endsWith( "Z" ) ) {
  								date = date.substring( 0, date.length() - 1) + "GMT-00:00";
  
  							} else {
  								if(date.indexOf('T') > -1) {
  									int index = date.indexOf('+');
  									index = index > -1 ? index : date.lastIndexOf('-');
  
  									if (index > -1) {
  										String left = date.substring( 0, index );
  										String right = date.substring( index, date.length() );
  
  										date = left + "GMT" + right;
  									}
  								}
  							}
  
  							sdf.setLenient(false); 
  							result = sdf.parse(date);
  							break;
  						}
  					}
  				}
  			} else if (value instanceof Long) {
  				calendar.setTimeInMillis((Long) value);
  				result = calendar.getTime();
  			} else if (value instanceof Date) {
  				result = (Date) value;
  			} else {
  				result = null;
  			}
  		} catch (Exception e) {
  			result = null;
  		}
  
  		return result;
  	}