2014-01-07 99 views
-3

我有一個格式爲MMDDYYYY(例如01062014)的字符串,我希望將其轉換爲2014年1月6日之類的內容。我目前擁有的代碼無效並返回默認月份(出錯了),然後是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,它不應該。 OP要求'2014年1月6日'。 –

+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 dateformat。我的錯 – sasankad