Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  
  package org.docx4j.model.fields;
  
  import java.util.HashMap;
  import java.util.Map;
  
  import org.slf4j.Logger;
From http://stackoverflow.com/questions/3389348/parse-any-date-in-java with modifications for locale See http://stackoverflow.com/questions/3307330/using-joda-date-time-api-to-parse-multiple-formats for similar in Joda
 
 public class DateFormatInferencer {
 	
 	private static Logger log = LoggerFactory.getLogger(DateFormatInferencer.class);		
 	
 	private static final Map<StringStringDATE_FORMAT_REGEXPS = new HashMap<StringString>();
 	
 	static {
 		
 		if (Docx4jProperties.getProperty("docx4j.Fields.Dates.DateFormatInferencer.USA"false)) {
 			
 			// parse USA 
 			.info("Infering dates based using USA formats");
 	
 		    .put("^\\d{8}$""yyyyMMdd");
 		    .put("^\\d{1,2}-\\d{1,2}-\\d{4}$""MM-dd-yyyy");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{4}-\\d{1,2}-\\d{1,2}$", "yyyy-MM-dd");
 		    .put("^\\d{1,2}/\\d{1,2}/\\d{4}$""MM/dd/yyyy");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{4}/\\d{1,2}/\\d{1,2}$", "yyyy/MM/dd");
 		    .put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}$""dd MMM yyyy");
 		    .put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}$""dd MMMM yyyy");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{12}$", "yyyyMMddHHmm");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{8}\\s\\d{4}$", "yyyyMMdd HHmm");
 		    .put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}:\\d{2}$""MM-dd-yyyy HH:mm");
 		    .put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{2}$""yyyy-MM-dd HH:mm");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}:\\d{2}$", "MM/dd/yyyy HH:mm");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}:\\d{2}$", "yyyy/MM/dd HH:mm");
 		    .put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}\\s\\d{1,2}:\\d{2}$""dd MMM yyyy HH:mm");
 		    .put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}\\s\\d{1,2}:\\d{2}$""dd MMMM yyyy HH:mm");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{14}$", "yyyyMMddHHmmss");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{8}\\s\\d{6}$", "yyyyMMdd HHmmss");
 		    .put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$""MM-dd-yyyy HH:mm:ss");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}$", "yyyy-MM-dd HH:mm:ss");
 		    .put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$""MM/dd/yyyy HH:mm:ss");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}$", "yyyy/MM/dd HH:mm:ss");
 		    .put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$""dd MMM yyyy HH:mm:ss");
 		    .put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$""dd MMMM yyyy HH:mm:ss");
 
 	// ("yyyy-MM-dd'T'HH:mm:ss"
 		} else {
 			
 			// parse international
 			.info("Infering dates based using International formats");
 	
 		    .put("^\\d{8}$""yyyyMMdd");
 		    .put("^\\d{1,2}-\\d{1,2}-\\d{4}$""dd-MM-yyyy");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{4}-\\d{1,2}-\\d{1,2}$", "yyyy-MM-dd");
 		    .put("^\\d{1,2}/\\d{1,2}/\\d{4}$""dd/MM/yyyy");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{4}/\\d{1,2}/\\d{1,2}$", "yyyy/MM/dd");
 		    .put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}$""dd MMM yyyy");
 		    .put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}$""dd MMMM yyyy");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{12}$", "yyyyMMddHHmm");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{8}\\s\\d{4}$", "yyyyMMdd HHmm");
 		    .put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}:\\d{2}$""dd-MM-yyyy HH:mm");
 		    .put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{2}$""yyyy-MM-dd HH:mm");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}:\\d{2}$", "MM/dd/yyyy HH:mm");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}:\\d{2}$", "yyyy/MM/dd HH:mm");
 		    .put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}\\s\\d{1,2}:\\d{2}$""dd MMM yyyy HH:mm");
 		    .put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}\\s\\d{1,2}:\\d{2}$""dd MMMM yyyy HH:mm");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{14}$", "yyyyMMddHHmmss");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{8}\\s\\d{6}$", "yyyyMMdd HHmmss");
 		    .put("^\\d{1,2}-\\d{1,2}-\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$""dd-MM-yyyy HH:mm:ss");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}$", "yyyy-MM-dd HH:mm:ss");
 		    .put("^\\d{1,2}/\\d{1,2}/\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$""dd/MM/yyyy HH:mm:ss");
 	//	    DATE_FORMAT_REGEXPS.put("^\\d{4}/\\d{1,2}/\\d{1,2}\\s\\d{1,2}:\\d{2}:\\d{2}$", "yyyy/MM/dd HH:mm:ss");
 		    .put("^\\d{1,2}\\s[a-z]{3}\\s\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$""dd MMM yyyy HH:mm:ss");
 		    .put("^\\d{1,2}\\s[a-z]{4,}\\s\\d{4}\\s\\d{1,2}:\\d{2}:\\d{2}$""dd MMMM yyyy HH:mm:ss");
 		}
 	}

Determine SimpleDateFormat pattern matching with the given date string. Returns null if format is unknown. You can simply extend DateUtil with more formats if needed.

Parameters:
dateString The date string to determine the SimpleDateFormat pattern for.
Returns:
The matching SimpleDateFormat pattern, or null if format is unknown.
See also:
SimpleDateFormat
 
 	public static String determineDateFormat(String dateString) {
 				
 	    for (String regexp : .keySet()) {
	        if (dateString.toLowerCase().matches(regexp)) {
	            return .get(regexp);
	        }
	    }
	    return null// Unknown format.
	}	
    public static void main(String[] args
            throws Exception {
    	..println(determineDateFormat("21/3/2012"));
    }
New to GrepCode? Check out our FAQ X