字符串转换为DateTime

时间:2013-08-09 10:26:56

标签: java jodatime date-parsing parseexception

我有一个joda DateTime值存储在mysql中作为String。

但是当我尝试从mysql表中获取此字符串时,其格式会发生变化,当我尝试将此字符串转换为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”

请帮帮我。

5 个答案:

答案 0 :(得分: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);
        }

    } `

答案 1 :(得分:2)

试试这个,只需将字符串传递给此方法并获取date的值

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;
}

答案 2 :(得分:0)

试试这个

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

答案 3 :(得分:0)

正确的格式是:

 "yyyy-MM-dd hh:mm:ss.S"

答案 4 :(得分: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表示要在其中返回sql值的(例如,Main.java)的类名,txtVariable.getText()是对诸如textfield或label之类的变量的引用,或者其他你把价值归还了。转换完成后,您可以使用javaDate1sqlDate1,具体取决于您想要的日期类型。