1

我有一些不同格式的日期要解析,但我无法用SimpleDateFormat. 谁能帮我找到这个日期的模式:

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

  • 公元前 63 年 9 月 23 日
  • 8 月 19 日 广告 14

谢谢

4

4 回答 4

1

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

运行解决方案。

于 2012-05-27T15:19:39.420 回答
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

于 2012-05-27T14:45:51.417 回答
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()));
于 2012-05-27T15:31:16.187 回答
0

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

例如,您的第一个两个示例都是使用 dd MMMM yyyy 生成的;)

于 2012-05-27T14:39:16.943 回答