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