Java Dateformat:基于日期值的格式模式

Java Dateformat:基于日期值的格式模式,java,date-format,simpledateformat,Java,Date Format,Simpledateformat,我有日期2013/10/09 00:00:00-10908-11。我想知道它的日期格式模式。以及如何根据日期猜测日期格式模式 谢谢您可以使用暴力方法为您的查询找到解决方案。在搜索过程中,我找到了一个代码,它可以让你对方法有所了解 private static final Map<String, String> DATE_FORMAT_REGEXPS = new HashMap<String, String>() {{ put("^\\d{8}$", "yyyyMM

我有日期
2013/10/09 00:00:00-10908-11
。我想知道它的日期格式模式。以及如何根据日期猜测日期格式模式


谢谢

您可以使用暴力方法为您的查询找到解决方案。在搜索过程中,我找到了一个代码,它可以让你对方法有所了解

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.
}
private static final Map DATE\u FORMAT\u REGEXPS=new HashMap(){{
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}$”,“yyy/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”);
放置(“^\\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”);
放置(“^\\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”);
}};
/**
*确定与给定日期字符串匹配的SimpleDataFormat模式。如果
*格式未知。如果需要,您可以简单地使用更多格式扩展DateUtil。
*@param dateString用于确定的SimpleDataFormat模式的日期字符串。
*@返回匹配的SimpleDataFormat模式,如果格式未知,则返回null。
*@参见SimpleDataFormat
*/
公共静态字符串determineDateFormat(字符串日期字符串){
for(字符串regexp:DATE\u FORMAT\u REGEXPS.keySet()){
if(dateString.toLowerCase().matches(regexp)){
返回日期\格式\ REGEXPS.get(regexp);
}
}
返回null;//未知格式。
}
这是博客中的代码片段。
希望这对您有用。

您可以使用暴力方法为您的查询找到解决方案。在搜索过程中,我找到了一个代码,它可以让你对方法有所了解

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.
}
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) {

                }
            }
        }
    }
}
private static final Map DATE\u FORMAT\u REGEXPS=new HashMap(){{
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}$”,“yyy/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”);
放置(“^\\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”);
放置(“^\\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”);
}};
/**
*确定与给定日期字符串匹配的SimpleDataFormat模式。如果
*格式未知。如果需要,您可以简单地使用更多格式扩展DateUtil。
*@param dateString用于确定的SimpleDataFormat模式的日期字符串。
*@返回匹配的SimpleDataFormat模式,如果格式未知,则返回null。
*@参见SimpleDataFormat
*/
公共静态字符串determineDateFormat(字符串日期字符串){
for(字符串regexp:DATE\u FORMAT\u REGEXPS.keySet()){
if(dateString.toLowerCase().matches(regexp)){
返回日期\格式\ REGEXPS.get(regexp);
}
}
返回null;//未知格式。
}
这是博客中的代码片段。
希望这对你有用。

什么是
10908-11
part?什么是
10908-11
part?如果你在这里找到了你的问题的答案,请接受它作为答案。@Jaykob:使用这个“put”(^\\d{1,2}.\\d{1,2}.\\d{4}\\s\\d{1,2}:\\d{2}.,“dd MM.yyyy HH:MM”);'如果你在这里找到了你的问题的答案,请接受它作为答案。@Jaykob:使用这个'put(^\\d{1,2}\\d{1,2}\\d{4}\\s\\d{1,2}:\\d{2}$',“dd.MM.yyyy HH:MM”);'
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) {

                }
            }
        }
    }
}