想要转换以下日期格式:
Mar 10th 2016
Mar 1st 2016
Mar 2nd 2016
Mar 3rd 2016
Mar 22nd 2016
到
10-03-2016
01-03-2016
02-03-2016
03-03-2016
22-03-2016
尝试了几件但未能获得所需的输出。
答案 0 :(得分:0)
尝试字符串操作。读取输入,根据空间分割并为您自己的转换器编写逻辑
答案 1 :(得分:0)
由于SimpleDateFormat
中的序数日数没有模式,您首先应该清理字符串,然后使用两个SimpleDateFormat
来解析日期并将其字符串化:
static final DateFormat DF_FROM = new SimpleDateFormat("MMM d yyyy", Locale.ENGLISH);
static final DateFormat DF_TO = new SimpleDateFormat("dd-MM-yyyy");
synchronized static String convert(String date) throws ParseException {
date = date.replaceAll("(?<=\\d)(st|nd|rd|th)", ""); // remove ordinal suffix
return DF_TO.format(DF_FROM.parse(date)); // convert
}
请注意synchronized
方法对SimpleDateFormat
方法的使用不是线程安全的。
答案 2 :(得分:0)
试试这个:)
private String converter (String in) throws Exception {
String stringMonth = in.split(" ")[0];
Date date = new SimpleDateFormat("MMM", Locale.ENGLISH).parse(stringMonth);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.MONTH);
int day = Integer.valueOf(in.split(" ")[1].replaceAll("[a-z]", ""));
int year = Integer.valueOf(in.split(" ")[2]) - 1900;
Date result = new Date();
result.setYear(year);
result.setMonth(month);
result.setDate(day);
DateTime dt = new DateTime(result);
return dt.toString("dd-MM-yyyy");
}