2013-08-09 6 views
0

У меня есть значение даты joda joda, хранящееся в mysql как String.Преобразование строк в DateTime

Но когда я пытаюсь получить эту строку из тузда таблицы, ее изменения формата и когда я пытаюсь преобразовать эту строку в DateTime, он бросает: -

IllegalArgumentException: Invalid format: "2012-10-04 00:00:00.0" is malformed at " 00:00:00.0" 

В таблице Mysql можно увидеть значение как «2012-10-04 00:00:00», но когда я получаю это время от mysql, он печатается как «2012-10-04 00: 00: 00.0».

Пожалуйста, помогите мне.

+0

Можем ли мы увидеть код конверсии? – GGrec

ответ

0

Попробуйте

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S"); 
Date date = df.parse("2012-10-04 00:00:00.0"); 
+0

Он не является жестким кодированием ввода. Он извлекается из базы данных, которая не является ожидаемым форматом и, следовательно, получает это исключение. Ваш код не будет работать для ввода, указанного в вопросе. –

0

Правильный формат:

"yyyy-MM-dd hh:mm:ss.S" 
0
String newF="yyyy-MM-dd hh:mm:ss"; 
String oldF="yyyy-MM-dd hh:mm:ss.S"; 
SimpleDateFormat sdf1=new SimpleDateFormat(oldF); 
SimpleDateFormat sdf2=new SimpleDateFormat(newF); 
String txt1=ClassWhichContainsTheVariableYouGotTheResultInTo.txtVariable.getText(); 

String date1=sdf2.format(sdf1.parse(txt1)); 
java.util.Date javaDate1=(Date)sdf2.parse(date1); //this converts it as java.util.Date 
java.sql.Date sqlDate1=new java.sql.Date(theDate1.getTime()); //this converts it to java.sql.Date (if needed) 

Таким образом, вы можете разобрать переменную типа String в java.Date вашего выбора. Значение ClassWhichContainsTheVariableYouGotTheResultInTo означает имя класса (например, Main.java), в котором вы возвращаете значение sql, а txtVariable.getText() - это ссылка на переменную, такую ​​как текстовое поле или метка, или все, на что вы вернули значение. После завершения преобразования вы можете использовать либо javaDate1, либо sqlDate1, в зависимости от того, какой тип даты вы хотите.

2
`String dob="your date String"; 
    //2013-jan-12 == 2013-01-12 
    String dobis=null; 
    final DateFormat df = new SimpleDateFormat("yyyy-MMM-dd"); 
    final Calendar c = Calendar.getInstance(); 
    try { 
     if(dob!=null && !dob.isEmpty() && dob != "") 
     { 
     c.setTime(df.parse(dob)); 
     int month=c.get(Calendar.MONTH); 
     month=month+1; 
     dobis=c.get(Calendar.YEAR)+"-"+month+"-"+c.get(Calendar.DAY_OF_MONTH); 
     } 

    } ` 
2

Попробуйте это, просто передать строку к этому методу и получить значение даты

public String DateToDateFormat(String dateandTime) { 
    final Calendar calendar = Calendar.getInstance(); 
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S"); 
    try { 
     calendar.setTime(df.parse(dateandTime)); 
    } catch (java.text.ParseException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    int yearofsendingmsg = calendar.get(Calendar.YEAR); 
    // int monthofsendingmsg = calendar.get(Calendar.MONTH) + 1; 
    int dayofsendingmsg = calendar.get(Calendar.DAY_OF_MONTH); 
    java.util.Date d = new java.util.Date(calendar.getTimeInMillis()); 
    String monthofsendingmsg = new SimpleDateFormat("MMM").format(d); 
    String date = dayofsendingmsg + " " + monthofsendingmsg + " " 
      + yearofsendingmsg; 
    return date; 
} 
Смежные вопросы