如何在Java中将日期转换为数字日历日期?

时间:2016-03-17 11:10:29

标签: java date

想要转换以下日期格式:

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

尝试了几件但未能获得所需的输出。

3 个答案:

答案 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");
}