2014-01-07 4 views
-3

У меня есть строка, которая находится в формате MMDDYYYY (например, 01062014), и я хочу преобразовать ее в нечто вроде 6 января 2014. Код, который у меня сейчас есть, не работает и возвращает месяц по умолчанию (что-то пошло не так), а затем 10, 6204.Преобразование из MMDDYYYY на сегодняшний день java

String[] datesRaw = args[3].split(""); 
String[] dates = { datesRaw[0] + datesRaw[1], datesRaw[2] + datesRaw[3], datesRaw[4] + datesRaw[5] + datesRaw[6] + datesRaw[7] }; 
int[] numbers = new int[dates.length]; 
for (int i = 0; i < dates.length; i++) { 
    numbers[i] = Integer.parseInt(dates[i]); 
} 
String month = "Something whent wrong"; 
switch (numbers[0]) { 
    case 1: 
     month = "January"; 
     break; 
    case 2: 
     month = "February"; 
     break; 
    case 3: 
     month = "March"; 
     break; 
    case 4: 
     month = "April"; 
     break; 
    case 5: 
     month = "May"; 
     break; 
    case 6: 
     month = "June"; 
     break; 
    case 7: 
     month = "July"; 
     break; 
    case 8: 
     month = "August"; 
     break; 
    case 9: 
     month = "September"; 
     break; 
    case 10: 
     month = "October"; 
     break; 
    case 11: 
     month = "November"; 
     break; 
    case 12: 
     month = "December"; 
     break; 
} 
fileName = month + " " + dates[1] + ", " + dates[2]; 
+1

Ваша первая цифра - '0'. Используйте 'SimpleDateFormat'. –

+0

Если это проблема, то как ее исправить? Пример кода может быть? – user2628615

ответ

2

Используйте два SimpleDateFormat объектов - один для разбора начальной String в Date, а другой формат результирующего Date в String.

public String convert(String inputString) { 
    SimpleDateFormat inputFormat = new SimpleDateFormat("MMddyyyy"); 
    SimpleDateFormat outputFormat = new SimpleDateFormat("MMMM d, yyyy"); 
    Date theDate = inputFormat.parse(inputString); 
    return outputFormat.format(theDate); 
} 

Вы, вероятно, хотите, чтобы создать эти два SimpleDateFormat объекты как константы внутри класса, который имеет этот метод, но следует помнить, что такой подход позволил бы сделать этот метод не поточно.

+0

Должно быть "MMMM dd, yyyy" –

+0

Нет @Allan, это не должно. ОП попросил «6 января 2014 года». –

+0

Да, это мой плохой –

0

, как вы пошли с не правильный путь. Было бы лучше преобразовать строку цифр в объект Date, а затем использовать формат печати, чтобы распечатать его по своему усмотрению.

This ответ может помочь вам

0
String date = "01062014"; 
DateFormat ft = new SimpleDateFormat("MMddyyyy"); 
DateFormat ft1 = new SimpleDateFormat("MMMM dd, yyyy"); 


System.out.println(ft1.format((Date)ft.parse(date))); 
+1

'(" ddMMyyyy ")' предполагается быть '(" MMddyyyy ")' потому что в '" 01062014 "', '01' - месяц – Baby

+0

@RafaEl, Спасибо, что указали это. Я просто прочитал численное значение, не глядя на формат даты OP. моя вина – sasankad

Смежные вопросы