我有一些不同格式的日期要解析,但我无法用SimpleDateFormat
. 谁能帮我找到这个日期的模式:
- 1892 年 7 月 6 日
- 1915 年 5 月 9 日
- 335 年 2 月
- 1768-02-12
和
- 公元前 63 年 9 月 23 日
- 8 月 19 日 广告 14
谢谢
您只需提供您希望您的日期被解析的模式的可能性,并通过它们找到第一个匹配项。
如果您必须使用多种格式进行解析, 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 年 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()));
在这里,您可以找到一个很棒的生成器,用于创建您可以想象的每种日期格式 http://www.fileformat.info/tip/java/simpledateformat.htm
例如,您的第一个两个示例都是使用 dd MMMM yyyy 生成的;)