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

时间:2015-01-05 18:34:27

标签: java datepicker

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

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());
}

3 个答案:

答案 0 :(得分:2)

对于相对简单的任务,您的方法非常复杂。你为什么不用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];

答案 1 :(得分: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]);

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

答案 2 :(得分:0)

如果您被允许使用java 8,您可以给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));

@No aNoNym建议是对的,你得到以下内容

25, THU