某些字符串的DateFormat模式

时间:2012-05-27 14:35:03

标签: java string date

我有一些不同的日期格式要解析,但我无法用SimpleDateFormat识别它们。任何人都可以帮我找到这个日期的模式:

  • 1892年7月6日
  • 1915年5月9日
  • 二月335
  • 1768年2月12日

  • 9月23日63 bc
  • 19 8月14日

谢谢

4 个答案:

答案 0 :(得分:1)

如果您必须使用多种格式进行解析,

Joda通常会更好。例如,

        private static DateTimeFormatter dateFormatter;
        String[] validDateFormats = new String[] { "dd-MMM-yyyy HH:mm:ss",
                "yyyy-MM-dd HH:mm:ss.SSS" };
        DateTimeParser[] parsers = new DateTimeParser[validDateFormats.length];
        for (int i = 0; i < validDateFormats.length; ++i) {
            parsers[i] = DateTimeFormat.forPattern(validDateFormats[i])
                    .getParser();
        }
        dateFormatter = new DateTimeFormatterBuilder().append(null, parsers)
                .toFormatter().withZone(DateTimeZone.UTC);

现在,如果输入匹配任何格式,则此dateFormatter将正确解析:

        inputDate = dateFormatter.parseDateTime(dateStr);
        DateTimeFormatter outputFormat = DateTimeFormat
                .forPattern("yyyy/MM/dd");
        String outputString = inputDate.toString(outputFormat);

可以从这里查找格式字符串:http://joda-time.sourceforge.net/api-release/org/joda/time/format/DateTimeFormat.html

答案 1 :(得分:1)

您只需提供您希望解析日期的模式的可能性,并通过它们找到第一个匹配项。

Run solution.

答案 2 :(得分:0)

在这里,您可以找到一个很棒的生成器,用于创建您可以想象的每种日期格式 http://www.fileformat.info/tip/java/simpledateformat.htm

E.g。你的第一个例子都是用dd MMMM yyyy生成的;)

答案 3 :(得分:0)

试试这些

2012年5月27日:

System.out.println(new SimpleDateFormat("d-MMM-YYYY").format(new Date()));

27-05-2012:

System.out.println(new SimpleDateFormat("d-MM-YYYY").format(new Date()));

27-05-12:

System.out.println(new SimpleDateFormat("dd-MM-YY").format(new Date()));