我有一些不同的日期格式要解析,但我无法用SimpleDateFormat
识别它们。任何人都可以帮我找到这个日期的模式:
和
谢谢
答案 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)
您只需提供您希望解析日期的模式的可能性,并通过它们找到第一个匹配项。
答案 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()));