2014-01-07 101 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