如何从模式dd-MMM-yyyy中的给定字符串日期获取整数中的日月份和年份

时间:2019-05-31 15:09:07

标签: java android

我有一个日期为(dd-MMM-yyyy)的字符串日期,例如(23-SEP-2019)。我想从整数中的上述字符串中分离出日期月份和年份,例如 day = 23,month = 09,year = 2019

3 个答案:

答案 0 :(得分:0)

String pattern = "dd-MMM-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = simpelDateFormat.parse(yourdateString);
Calendar now = Calendar.getInstance();
now.setTime(date);
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH) + 1; // Note: zero based!
int day = now.get(Calendar.DAY_OF_MONTH);

答案 1 :(得分:0)

有几种方法可以做到这一点,但我会这样做:

//convert it to a char array.
char[] asChars = dateString.toCharArray();
//Parse the date and year and from new strings.
int dayVal = Interger.ParseInt(""+asChars[0]+asChars[1]);
int yearVal = Interger.ParseInt(""+asChars[7]+asChars[8]+asChars[9]+asChars[10]);
//use a switch for the month.
int monthVal = 0;
String monthString = ""+asChars[3]+asChars[5]+asChars[6];
switch (monthString) {
    case "JAN" :
        monthVal = 1;
        break;
    case "FEB" :
        monthVal = 2;
        break;
    case "MAR"  :
        monthVal = 3;
        break;
    case "APR" :
        monthVal = 4;
        break;
    case "MAY" :
        monthVal = 5;
        break;
    case "JUN" :
        monthVal = 6;
        break;
    case "JUL" :
        monthVal = 7;
        break;
    case "AUG" :
        monthVal = 8;
        break;
    case "SEP" :
        monthVal = 9;
        break;
    case "OCT" :
        monthVal = 10;
        break;
    case "NOV" :
        monthVal = 11;
        break;
    case "DEC" :
        monthVal = 12;
        break;
}

您需要将其放在try块中,并且想要捕获NumberFormatException和IndexOutOfBounds,在两种情况下,字符串的格式均不正确。

您还需要分别检查月份字符串是否与月份匹配,因此,请向交换机添加默认大小写,或者在所有步骤之后都检查monthVal> 0。

如果您真的想确保原始字符串的格式正确(这是一个单独的问题,但我认为仍然很重要),则可以在所有字符串之前检查字符串的长度为11。

答案 2 :(得分:0)

您可以使用Java 8 LocalDate功能。我在代码下方提供了,您可以检查。

String dateStr = "23-Sep-2019";
    DateTimeFormatter formatter_1 = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
    LocalDate localDate = LocalDate.parse(dateStr, formatter_1);
    System.out.println("localDate_1 = " + localDate);
    int day = localDate.getDayOfMonth();
    int month = localDate.getMonthValue();
    int year = localDate.getYear();
    System.out.println(day + "-" + month + "-" + year);