How to get the given date string format(pattern) in java?

后端 未结 10 1637
抹茶落季
抹茶落季 2020-11-30 04:41

I want to get the format of a given date string.

Example: I have a string like 2011-09-27T07:04:21.97-05:00 and the date format of this string is

相关标签:
10条回答
  • 2020-11-30 05:12

    If I understand you correctly, you want to parse arbitrary strings (that is, string of a format you don't know) as dates by using DateFormat.parse()? Then you have to deal with issues like how to handle 01-02-03 (2 Jan 2003? 1 Feb 2003? etc.)

    You should know at least something about the expected format, like a choice of several predefined formats for your input.

    0 讨论(0)
  • 2020-11-30 05:14
    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) {
    
                    }
                }
            }
        }
    }
    
    0 讨论(0)
  • 2020-11-30 05:15

    I think you should try to parse input string with some predefine patterns. The one that works is the one you need. Remember that some patterns are quite tricky.

    01.12.12 is 01 December 2012 in Europe but 12 January 2012 in USA. It could be 12 December 2001 too.

    0 讨论(0)
  • 2020-11-30 05:18
    HH:mm:ss.SSS => ([0-2]{1,}[0-9]{1,})(:)([0-5]{1,}[0-9]{1,})(:)([0-5]{1,}[0-9]{1,})(.)([0-9]{1,3})
    
    yyyy-mm-dd => ([0-9]{4})(-)([0-1]{1,}[0-9]{1,})(-)([0-3]{1,}[0-9]{1,})
    
    0 讨论(0)
提交回复
热议问题