Ошибка разбора в программе Java - PullRequest
1 голос
/ 16 сентября 2010

ошибка возникает при разборе proj_close_date. (Java.text.ParseException: Unparseable date: "09/09/2010") Я читаю значение project_close_date из базы данных в формате строки.я хочу преобразовать его в формат даты, чтобы найти, есть ли proj_close_date между from_date и to_date

public ArrayList viewAllCustProj1(String frm_date,String to_date,String cust,String proj)
{
    ArrayList list= new ArrayList();
    try
    {
        String strCust="";
        String strproj="";       

        if(!cust.equalsIgnoreCase("ALL") && !cust.equals(null))
        {
            strCust="and customer_code='"+cust+"'";
        }
        if(!proj.equalsIgnoreCase("ALL") && !proj.equals(null))
        {
            strproj="and project_code='"+proj+"'";
        }           
        if(cust.equalsIgnoreCase("ALL") && !proj.equalsIgnoreCase("ALL"))
        {

        }
        else
        {
            stmt=conn.prepareStatement("select customer_code from mst_customer where visible=1 "+strCust+" and category='EU' and multiple_project=0");
            rs=stmt.executeQuery();
            while(rs.next())
            {
                reportBean bean=new reportBean();
                bean.setCust_code(rs.getString("customer_code"));
                bean.setProject_code("");
                list.add(bean);
            }
            rs.close();
            stmt.close();
        }   


        System.out.println(" select  customer_code,project_code,proj_close_date,added_on from mst_project where visible=1 "+strCust+" "+strproj+"");
        stmt=conn.prepareStatement("select customer_code,project_code,proj_close_date,added_on from mst_project where visible=1 "+strCust+" "+strproj+"");
        rs=stmt.executeQuery();
        while(rs.next())
        {
            reportBean bean=new reportBean();

            String proj_close_date=rs.getString(3);
            String added_on=rs.getString(4);

            DateFormat myDateFormat = new SimpleDateFormat("MM-dd-yyyy");

            DateFormat myDateFormat1= new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");

            Date myDate1 = null;   
            Date myDate2 = null;
            Date myDate3 = null;
            Date myDate4 = null;
            Date myDate5 = null;
          try
            {
              if(proj_close_date==null || proj_close_date.trim().equals("") || proj_close_date=="NULL")
              {
                  System.out.println("\n ****** In IF Loop ");
                  bean.setCust_code(rs.getString("customer_code"));
                  bean.setProject_code(rs.getString("project_code"));
                  list.add(bean);
              }
              else
              {
                    System.out.println("\n ****** In Else Loop ");
                    myDate1 = myDateFormat.parse(proj_close_date);
                    myDate2 = myDateFormat.parse(frm_date);
                    myDate3 = myDateFormat.parse(to_date);
                    myDate5 = myDateFormat1.parse(added_on);

                   //myDate4 = myDateFormat.format(myDate5);

                    System.out.println("Project Code ---->"+rs.getString(2));                                            
                    System.out.println("Proj_close_date ------>"+myDate1);
                    System.out.println("From Date ---->"+myDate2);
                    System.out.println("to Date ---->"+myDate3);
                    //System.out.println("Added_on --->"+myDate4);
                    System.out.println("Added_on 1 ie Date 5 ---->"+myDate5);

                    if(myDate1.after(myDate2) && myDate1.before(myDate3))  // means --> if(proj_close_date.after(frm_date) && proj_close_date.before(to_date))
                     {                           
                        if(myDate1.after(myDate4))  // means --> if(proj_close_date.after(added_on))
                        {
                            bean.setCust_code(rs.getString("customer_code"));
                            bean.setProject_code(rs.getString("project_code"));
                            list.add(bean);
                        }               
                       else
                       {
                           bean.setCust_code(rs.getString("customer_code"));
                           bean.setProject_code(rs.getString("project_code"));
                           list.add(bean);
                       } 
                   }//if    
              }//else

            }//try  
            catch (ParseException e)
           {
                 System.out.println("Invalid Date Parser Exception ");
                 e.printStackTrace();
           }


        }
        rs.close();
        stmt.close();

    }
    catch(SQLException sex)
    {
        sex.printStackTrace();
    }
    finally
    {
        closeConnection();
    }
    return list;
}

1 Ответ

3 голосов
/ 16 сентября 2010

Измените эту строку

DateFormat myDateFormat = new SimpleDateFormat("MM-dd-yyyy");

на эту:

DateFormat myDateFormat = new SimpleDateFormat("MM/dd/yyyy");

Однако совершенно неясно, почему вы получаете все значения в виде строк, возможно, вам следует рассмотреть выделенные ResultSet методынапример, getDate или getTimeStamp.

В качестве еще одного побочного замечания я хотел бы упомянуть, что следует избегать построения запросов SQL путем конкатенации - следует генерировать запросы с заполнителями ?, а затем установитьпараметры на вашем PreparedStatement.

...