如何从给定的字符串中获取月份和日期?

How to get month and day from given string?

如何从给定的字符串中获取星期和日期。例如:

String date="25-12-2014";

如何从给定的字符串中获取日期和日期?

预期输出是,

 25
 Thu

我尝试这个的时候卡住了。

  private static String getFormatedDate(String strDate) {
    String result = "";
    if(strDate != null) {
     if (strDate.contains("-")) {
         String[] dates = strDate.split("-");   
        for(int i=0;i<dates.length;i++) {
 result = result + Utils.replaceDateFormat(dates[i].trim(),"MMM dd", "EE, M.dd") + ("-");
        }
        int lastIndex = result.lastIndexOf("-");
        result = result.substring(0, lastIndex).trim();
     }
     else {
         result = Utils.replaceDateFormat(strDate.trim(),"MMM dd", "EE, M.dd");
     }
    }
    return result;
   }
  Utils:

  public static String replaceDateFormat(String value, String actualFormat, String exceptedFormat)                   {
    final int currentYear = Calendar.getInstance().get(Calendar.YEAR);
    final SimpleDateFormat fromDate = new SimpleDateFormat(actualFormat);
    final SimpleDateFormat toDate = new SimpleDateFormat(exceptedFormat);

    Date convertedFromDate = null;
    try {
        convertedFromDate = fromDate.parse(value);
    } catch (java.text.ParseException e) {
        e.printStackTrace();
    }

    final Calendar c1 = Calendar.getInstance();
    c1.setTime(convertedFromDate);
    c1.set(Calendar.YEAR, currentYear);     
    return toDate.format(c1.getTime());
}

你的方法对于一个相对简单的任务来说非常复杂。为什么不使用 SimpleDateFormat?您可以使用解析方法。例如:

Date date = new SimpleDateFormat("dd-MM-yyyy").parse(string);

然后您可以从那里获取必填字段。

编辑

要获取星期几,您使用以下代码是正确的:

Date d = date.parse(result); 
Calendar c = Calendar.getInstance(); 
c.setTime(d); 
int day=c.get(Calendar.DAY_OF_WEEK);

然后,如果您想要上面的格式,您可以制作一个包含星期几的数组:

String[] daysOfWeek = new String[]{"Sun","Mon"... etc}
String day = daysOfWeek[day - 1];

您可以使用日历中的方法:

    String date = "25-12-2014";
    SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
    Calendar cal = Calendar.getInstance();
    cal.setTime(format.parse(date));
    int day = cal.get(Calendar.DAY_OF_MONTH);
    int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
    DateFormatSymbols symbols = new DateFormatSymbols(new Locale("en"));
    String[] days = symbols.getShortWeekdays();
    System.out.printf("%02d %3s\n", day, days[dayOfWeek]);

符号可以设置为您的区域设置区域。

如果你被允许使用java8你可以给LocalDate一个机会:

String date = "25-12-2014";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate ld = LocalDate.parse(date, formatter);
System.out.println(ld.getDayOfMonth() + ", " + ld.getDayOfWeek());

输出为:

25, THURSDAY

编辑:

System.out.println(ld.getDayOfMonth() + ", " + ld.getDayOfWeek().substring(0, 3));

@没有aNoNym的建议是对的,有了下面的你就得到了

25, THU