2013-10-11 47 views

回答

3

您可以按照蠻力的方法來找到您所查詢的解決方案。在尋找我登上這可能給你一個擡頭的方法

private static final Map<String, String> DATE_FORMAT_REGEXPS = new HashMap<String, String>() {{ 
    put("^\\d{8}$", "yyyyMMdd"); 
    put("^\\d{1,2}-\\d{1,2}-\\d{4}$", "dd-MM-yyyy"); 
    put("^\\d{4}-\\d{1,2}-\\d{1,2}$", "yyyy-MM-dd"); 
    put("^\\d{1,2}/\\d{1,2}/\\d{4}$", "MM/dd/yyyy"); 
    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"); 
    put("^\\d{12}$", "yyyyMMddHHmm"); 
    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"); 
    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"); 
    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"); 
    put("^\\d{14}$", "yyyyMMddHHmmss"); 
    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"); 
    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"); 
    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. 
* @param dateString The date string to determine the SimpleDateFormat pattern for. 
* @return The matching SimpleDateFormat pattern, or null if format is unknown. 
* @see SimpleDateFormat 
*/ 
public static String determineDateFormat(String dateString) { 
    for (String regexp : DATE_FORMAT_REGEXPS.keySet()) { 
     if (dateString.toLowerCase().matches(regexp)) { 
      return DATE_FORMAT_REGEXPS.get(regexp); 
     } 
    } 
    return null; // Unknown format. 
} 

代碼這是從博客DateUtil代碼段。 希望結果對你有用。

+0

如果您在此查找到您的查詢的答案,請接受它作爲答案。 – VikramV

+0

德國格式如何,如dd.MM.yyyy? – Jaykob

+1

@Jaykob:使用這個 'put(「^ \\ d {1,2}。\\ d {1,2}。\\ d {4} \\ s \\ d {1,2}:\ \ d {2} $「,」dd.MM.yyyy HH:mm「);' – VikramV

3
import java.text.ParseException; 

import java.text.SimpleDateFormat; 

import java.util.Date; 

import java.util.regex.Matcher; 

import java.util.regex.Pattern; 

public class NewClass { 

    private static final String[] formats = { 
       "yyyy-MM-dd'T'HH:mm:ss'Z'", "yyyy-MM-dd'T'HH:mm:ssZ", 
       "yyyy-MM-dd'T'HH:mm:ss",  "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", 
       "yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd HH:mm:ss", 
       "MM/dd/yyyy HH:mm:ss",  "MM/dd/yyyy'T'HH:mm:ss.SSS'Z'", 
       "MM/dd/yyyy'T'HH:mm:ss.SSSZ", "MM/dd/yyyy'T'HH:mm:ss.SSS", 
       "MM/dd/yyyy'T'HH:mm:ssZ",  "MM/dd/yyyy'T'HH:mm:ss", 
       "yyyy:MM:dd HH:mm:ss",  "yyyyMMdd", }; 

     /* 
     * @param args 
     */ 
    public static void main(String[] args) { 
     String yyyyMMdd = "20110917"; 
     parse(yyyyMMdd); 
    } 

    public static void parse(String d) { 
     if (d != null) { 
      for (String parse : formats) { 
       SimpleDateFormat sdf = new SimpleDateFormat(parse); 
       try { 
        sdf.parse(d); 
        System.out.println("Printing the value of " + parse); 
       } catch (ParseException e) { 

       } 
      } 
     } 
    } 
}