では機能しないため、@GrefHNZの回答には同意しませんlist[0] = Wed May 02 12:07:54 EST 2012
。水曜日と 5 月は入力で解析できません。
私はこの解決策を作成しました(JDK7でのみ機能します):
public static void main(String[] args)
String s = "Wed May 02 12:07:54 EST 2012,Task 1 for Test 1,20";
String[] list = s.split(",");
String dateDesc = list[0];
String dateToParse = createStringToParse(dateDesc); //return "3 05 02 12:07:54 CEST 2012"
SimpleDateFormat dateFormat = new SimpleDateFormat("u MM dd kk:mm:ss z yyyy");
Date dueDate=null;
try {
dueDate = dateFormat.parse(dateToParse);
} catch (ParseException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println(dueDate); //print "Wed May 02 12:07:54 CEST 2012"
}
private static String createStringToParse(String dateDesc) {
int idx=dateDesc.indexOf(" ");
String day = dateDesc.substring(0,idx);
String month = dateDesc.substring(idx+1,dateDesc.indexOf(" ",idx+1));
String rest = dateDesc.substring(dateDesc.indexOf(month)+month.length());
switch(day){
case "Mon" :
day="1";break;
case "Tue" :
day="2";break;
case "Wed" :
day="3";break;
case "Thu" :
day="4";break;
case "Fri" :
day="5";break;
case "Sat" :
day="6";break;
case "Sun" :
day="7";break;
}
switch(month){
case "Jan" :
month="01";break;
case "Feb" :
month="02";break;
case "Mar" :
month="03";break;
case "Apr" :
month="04";break;
case "May" :
month="05";break;
case "Jun" :
month="06";break;
case "Jul" :
month="07";break;
case "Aug" :
month="08";break;
case "Sep" :
month="09";break;
case "Oct" :
month="10";break;
case "Nov" :
month="11";break;
case "Dec" :
month="12";break;
}
return day+" "+month+rest.replace("EST", "CEST");
}
理解するには、 Oracle のドキュメントSimpleDateFormat
を読んでください。